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常用标签 ...
随机推荐
- JSON和fastjson
一.JSON 语法规则: 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 名称/值对-->对象-->数组 JSON 名称/值对 JSON 数据的书写格式是:名称/值对. ...
- sql server 基础语法4 实践练习+子查询
drop table class create table class ( classId ) primary key not null, cName ) ) insert into class ', ...
- AcWing 217. 绿豆蛙的归宿 (概率期望+拓扑排序)打卡
给出一个有向无环的连通图,起点为1,终点为N,每条边都有一个长度. 数据保证从起点出发能够到达图中所有的点,图中所有的点也都能够到达终点. 绿豆蛙从起点出发,走向终点. 到达每一个顶点时,如果有K条离 ...
- 概念介绍:IaaS、PaaS、SaaS
云计算分几层的,分别是Infrastructure(基础设施)-as-a-Service,Platform(平台)-as-a-Service,Sofware(软件)-as -a -Service.基础 ...
- MyBatis简介与配置
1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XM ...
- PostgreSQL角色和权限
PostgreSQL是通过角色来管理数据库访问权限的,我们可以将一个角色看成是一个数据库用户,或者一组数据库用户.角色可以拥有数据库对象,如表.索引,也可以把这些对象上的权限赋予其它角色,以控制哪 ...
- tp5 thinkphp 使用phpqrcode生成带Logo的二维码
1 下载生成二维码类库 composer require aferrandini/phpqrcode 2 点击按钮下载 //二维码下载 public function down_qrcode() { ...
- 论一个PHP项目上线的注意点
一.后端问题 服务器配置要跟上流量 预估QPS时要给足未知流量的空间 后端数据库设计要根据项目大小来相对应,小型流量单表就可以,但是中大型要分库分表 在处理执行修改的操作时一定要多一层判断(判断是否已 ...
- 301重定向将不带www的域名跳转到www的域名,403 Forbidden You don’t have permission to access the URL on this server
博客搬迁,给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/11/14/301%e9%87%8d%e5%ae%9a%e5%90%91%e5%b0%86% ...
- leetcode.矩阵.566重塑矩阵-Java
1. 具体题目 给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数.重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充.如果具有给定参数的reshape操 ...