Shiro学习(9)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学习(9)JSP标签的更多相关文章
- java web 学习笔记 - JSP标签编程
1.JSP标签编程简介 标签编程在开发中并不常见,主要是为了更好的理解struts等框架的标签而打基础,完善相关知识体系. 标签编程分为: 一个继承自TagSupport的标签类,一个在WEB-INF ...
- Shiro第五篇【授权过滤、注解、JSP标签方式、与ehcache整合】
授权过滤器测试 我们的授权过滤器使用的是permissionsAuthorizationFilter来进行拦截.我们可以在application-shiro中配置filter规则 <!--商品查 ...
- Shiro笔记(五)JSP标签
Shiro笔记(五)JSP标签 导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags&q ...
- Shiro学习笔记五(Shiro标签,及通配符)
1.首先是导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> ...
- shiro中JSP标签
Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮. 导入标签库 <%@taglib prefix="shiro" uri=& ...
- shiro:10个过滤器;10个jsp标签;5个@注解
10个过滤器 过滤器简称 对应的java类 anon org.apache.shiro.web.filter.authc.AnonymousFilter authc org.apache.shiro. ...
- [原创]java WEB学习笔记16:JSP指令(page,include),JSP标签(forwar,include,param)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 第九章 JSP标签——《跟我学Shiro》
转发地址:https://www.iteye.com/blog/jinnianshilongnian-2026398 博客分类: 跟我学Shiro 跟我学Shiro 目录贴:跟我学Shiro目录贴 ...
- java web学习总结(二十七) -------------------JSP标签介绍
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...
随机推荐
- 【leetcode】907. Sum of Subarray Minimums
题目如下: 解题思路:我的想法对于数组中任意一个元素,找出其左右两边最近的小于自己的元素.例如[1,3,2,4,5,1],元素2左边比自己小的元素是1,那么大于自己的区间就是[3],右边的区间就是[4 ...
- HDU-4609(FFT/NTT)
HDU-4609(FFT/NTT) 题意: 给出n个木棒,现从中不重复地选出3根来,求能拼出三角形的概率. 计算合法概率容易出现重复,所以建议计算不合法方案数 枚举选出的最大边是哪条,然后考虑剩下两条 ...
- 微信JS-SDK接口上传图片以及wx.config的配置
最近做的微信网页要实现一个上传图片的功能,倒腾了半天终于搞好了,具体的步骤可以查看微信官方文档https://developers.weixin.qq.com/doc/offiaccount/OA_W ...
- php time()函数 语法
php time()函数 语法 time()函数怎么用? php time()函数用来返回当前时间的unix时间戳.语法是time(),返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 ...
- SPOJ LEXSTR 并查集
题目描述: Taplu and Abhishar loved playing scrabble. One day they thought of inventing a new game using ...
- SQL取日期部分的方法
一.convert convert(varchar(10),getdate(),120) : varchar(10) 截取位数可以调节,最多能显示19位(varchar(19)) 如:2009- ...
- error LNK2001: 无法解析的外部符号 __imp__Shell_NotifyIconA@8
编译链接报错 error LNK2001: 无法解析的外部符号 __imp__Shell_NotifyIconA@8 解决方案: 在代码中添加链接库Shell32.lib #pragma commen ...
- django 里面的更新数据(update)
https://blog.csdn.net/qq_42606051/article/details/81162189 https://blog.csdn.net/luojie140/article/d ...
- 【lua学习笔记】--- 数据类型
print("hello world!") --[注释方法]-- 单行注释 对应C# //--[[ 多行注释 /* 对应C# */]]-- -- [数据类型]--1 nil 空值 ...
- MySQL配置(二)
上篇文章简单的讲了一下MySQL的配置,这章我在具体讲述一下我所配置的一些内容. 一.密码策略 MySQL5.7默认安装了密码安全检查的插件.默认密码检查策略要求密码必须包含:大小写字母 ...