shiro中JSP标签
Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮。
导入标签库
- <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
标签库定义在shiro-web.jar包下的META-INF/shiro.tld中定义。
guest标签
- <shiro:guest>
- 欢迎游客访问,<a href="${pageContext.request.contextPath}/login.jsp">登录</a>
- </shiro:guest>
用户没有身份验证时显示相应信息,即游客访问信息。
user标签
- <shiro:user>
- 欢迎[<shiro:principal/>]登录,<a href="${pageContext.request.contextPath}/logout">退出</a>
- </shiro:user>
用户已经身份验证/记住我登录后显示相应的信息。
authenticated标签
- <shiro:authenticated>
- 用户[<shiro:principal/>]已身份验证通过
- </shiro:authenticated>
用户已经身份验证通过,即Subject.login登录成功,不是记住我登录的。
notAuthenticated标签
<shiro:notAuthenticated>
未身份验证(包括记住我)
</shiro:notAuthenticated>
用户已经身份验证通过,即没有调用Subject.login进行登录,包括记住我自动登录的也属于未进行身份验证。
principal标签
<shiro: principal/>
显示用户身份信息,默认调用Subject.getPrincipal()获取,即Primary Principal。
- <shiro:principal type="java.lang.String"/>
相当于Subject.getPrincipals().oneByType(String.class)。
- <shiro:principal type="java.lang.String"/>
相当于Subject.getPrincipals().oneByType(String.class)。
- <shiro:principal property="username"/>
相当于((User)Subject.getPrincipals()).getUsername()。
hasRole标签
- <shiro:hasRole name="admin">
- 用户[<shiro:principal/>]拥有角色admin<br/>
- </shiro:hasRole>
如果当前Subject有角色将显示body体内容。
hasAnyRoles标签
- <shiro:hasAnyRoles name="admin,user">
- 用户[<shiro:principal/>]拥有角色admin或user<br/>
- </shiro:hasAnyRoles>
如果当前Subject有任意一个角色(或的关系)将显示body体内容。
lacksRole标签
- <shiro:lacksRole name="abc">
- 用户[<shiro:principal/>]没有角色abc<br/>
- </shiro:lacksRole>
如果当前Subject没有角色将显示body体内容。
hasPermission标签
- <shiro:hasPermission name="user:create">
- 用户[<shiro:principal/>]拥有权限user:create<br/>
- </shiro:hasPermission>
如果当前Subject有权限将显示body体内容。
lacksPermission标签
- <shiro:lacksPermission name="org:create">
- 用户[<shiro:principal/>]没有权限org:create<br/>
- </shiro:lacksPermission>
如果当前Subject没有权限将显示body体内容。
另外又提供了几个权限控制相关的标签:
导入自定义标签库
- <%@taglib prefix="zhang" tagdir="/WEB-INF/tags" %>
示例
- <zhang:hasAllRoles name="admin,user">
- 用户[<shiro:principal/>]拥有角色admin和user<br/>
- </zhang:hasAllRoles>
- <zhang:hasAllPermissions name="user:create,user:update">
- 用户[<shiro:principal/>]拥有权限user:create和user:update<br/>
- </zhang:hasAllPermissions>
- <zhang:hasAnyPermissions name="user:create,abc:update">
- 用户[<shiro:principal/>]拥有权限user:create或abc:update<br/>
- </zhang:hasAnyPermissions>
hasAllRoles表示拥有所有相关的角色;hasAllPermissions表示拥有所有相关的权限;hasAnyPermissions表示拥有任意一个相关的权限。
另外可以参考我的《简单shiro扩展实现NOT、AND、OR权限验证》实现NOT、AND、OR权限验证:http://jinnianshilongnian.iteye.com/blog/1864800。
shiro中JSP标签的更多相关文章
- (二)shiro之jsp标签
一.介绍 <%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> Guest ...
- JavaWeb学习之JSP(二) JSP标签
JSP常用标签 什么是JSP标签 JSP标签,有的地方也叫做JSP动作,在JSP中编写大量的java代码会使JSP页面显得杂乱无章,看起来非常不舒服,因此JSP提供了一些类似html的标签,通过这些标 ...
- Shiro第五篇【授权过滤、注解、JSP标签方式、与ehcache整合】
授权过滤器测试 我们的授权过滤器使用的是permissionsAuthorizationFilter来进行拦截.我们可以在application-shiro中配置filter规则 <!--商品查 ...
- Spring+shiro配置JSP权限标签+角色标签+缓存
Spring+shiro,让shiro管理所有权限,特别是实现jsp页面中的权限点标签,每次打开页面需要读取数据库看权限,这样的方式对数据库压力太大,使用缓存就能极大减少数据库访问量. 下面记录下sh ...
- shiro:10个过滤器;10个jsp标签;5个@注解
10个过滤器 过滤器简称 对应的java类 anon org.apache.shiro.web.filter.authc.AnonymousFilter authc org.apache.shiro. ...
- jsp2.0+中的标签文件,JSP Fragment技术
刚进新公司不久,今天在看到项目中用到了.tag文件.刚开始我还以为这个是第三方类似freemarker的模板技术.问了下项目组的其他人员,原来这是jsp2.0以来就有的JSP Fragment技术.以 ...
- JSP中<img>标签引用本地图片
问题描述: jsp页面中<img>标签如何读取本地文件夹中的图片. 问题起因: 由于上传图片至本地文件夹中,图片路径为: D:/upload/file/image/img.jpg 所以将这 ...
- JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门
2 JSP内置标签(美化+业务逻辑) 1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容 2)JSP内 ...
- [置顶] jsp中c标签的使用
jsp中c标签的使用 核心标签库 它是JSTL中的核心库,为日常任务提供通用支持,如显示和设置变量.重复使用一组项目.测试条件和其他操作(如导入和重定向Web内容).Core标签按功能可分为4种类型: ...
随机推荐
- 【原理、应用】Quartz集群原理及配置应用
一.Quartz任务调度的基本实现原理 Quartz是OpenSymphony开源组织在任务调度领域的一个开源项目,完全基于Java实现.作为一个优秀的开源调度框架,Quartz具有以下特点: 强大的 ...
- Java后台要看的书
推荐一个 搜书的网站,挺好用的 鸠摩搜书 Java基础 <Head first Java> (入门用) <Java 编程思想> <Java核心技术卷> 并发 < ...
- [bzoj 4196][NOI 2015]软件包管理器
大概算是一道模板题吧? 就是细节有点多 罗列一下: 如果习惯从1开始搞树的编号的话,处理输入进来的那个依赖关系在加边的时候两个都要+1,体现在代码就是i要从2枚举到n,然后输入进来的那个数要+1 这道 ...
- Kylin介绍2
原理 官网 doc cube介绍 安装 案例 企业级特性 Apache Kylin 1.5的新功能和架构改变 Java API 通过java代码对kylin进行cube build kylin从入门 ...
- POJ 3693 Maximum repetition substring(连续重复子串)
http://poj.org/problem?id=3693 题意:给定一个字符串,求重复次数最多的连续重复子串. 思路: 这道题确实是搞了很久,首先枚举连续子串的长度L,那么子串肯定包含了r[k], ...
- java复制文件夹中的所有文件和文件夹到另一个文件夹中
1.复制文件夹 public static void copyDir(String oldPath, String newPath) throws IOException { File file = ...
- c++中static的用法详解
C 语言的 static 关键字有三种(具体来说是两种)用途: 1. 静态局部变量:用于函数体内部修饰变量,这种变量的生存期长于该函数. int foo(){ static int i = 1; // ...
- 两个DIV并排显示
今天做的一个项目,需要做3个div,一个是总框(Div1),另外两个是子框,按比例填满div1,我设置好两个div的width和height,发现效果是两个子div上下显示,如图所示: 要想将两个DI ...
- git 修改文件夹名字后如何提交
将文件夹名字从 v1.0.1 修改为 v1.0.2 git add --ignore-removal "v1.0.2/xsxsx"
- webbench高并发测试
安装ctags sudo apt-get install ctags 安装webbench 下载webbench http://home.tiscali.cz/~cz210552/distfiles/ ...