Shiro提供了JSTL 标签用于在JSP 页面进行权限控制,如根据登录用户显示相应的页面按钮。
Shiro支持三种方式实现授权过程
- 编码实现
- 注解实现
- JSP Taglig实现
JSP Taglig实现 - Shiro在JSP页面使用标签的形式表现,首先引入shiro标签。**
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
【1】<shiro:hasRole/>
如果有该角色,则校验通过。name属性值只能为单个。
示例如下:
<shiro:hasRole name ="admin">
...
<shiro:hasRole/>
【2】<shiro:hasAnyRoles/>
如果是角色中的一个,则校验即可通过。name值可为多个。
示例如下:
<shiro:hasAnyRoles name ="admin,normal">
...
</shiro:hasAnyRoles>
【3】<shiro:lacksRole/>
如果用户没有该角色,则校验通过。name属性值只能有一个。
示例如下:
<shiro:lacksRole name ="admin">
...
</shiro:lacksRole >
【4】<shiro:hasPermission/>
如果用户有某个权限,则校验通过。name属性值只能有一个。
示例如下:
<shiro:hasPermission name = "user:area">
....
</shiro:hasPermission>
【5】<shiro:lacksPermission/>
如果用户没有该权限,则校验通过。name属性值只能有一个。
示例如下:
<shiro:lacksPermissionname ="admin">
...
</shiro:lacksPermission>
【6】<shiro:guest/>
来宾标签,如果未认证(登录) 或者 系统未记住,则通过校验。
In other words : 验证当前用户是否为“访客”,即未认证(包含未记住)的用户。
范围:未认证已记住+未记住已认证+未认证且未记住。
示例如下:
<shiro:guest>
Hello,Please login..
</<shiro:guest>
【7】<shiro:user/>
用户标签,与来宾标签对应,如果已经认证(登录) 或 记住我,则通过校验。
In other words : 认证通过或已记住的用户 。
范围:认证未记住+记住未认证+认证且记住。
<shiro:user>
Welcome back John!
</shiro:user>
【8】<shiro:authenticated/>
认证标签比user标签更严格,只有**通过认证(登录)**才可通过校验。
In other words : 只有已认证通过的用户,不包含只有已记住(记住我)的用户,这是与user标签的区别所在
范围:认证且未记住+认证且已记住。
<shiro:authenticated>
....
</shiro:authenticated>
【9】<shiro:notAuthenticated/>
未认证通过用户,与authenticated标签相对应。与guest标签的区别是,该标签包含已记住用户。 即,“记住我”进行登录的yeshuyu未进行身份认证。
范围:未认证且未记住+未认证且已记住。
示例如下:
<shiro:notAuthenticated>
Please <a href="login.jsp">login</a>
</shiro:notAuthenticated>
【10】<shiro:principal/>
显示用户身份信息,默认调用Subject.getPrincipal() 获取,即Primary Principal。
示例如下:
Hello, <shiro:principal/>, how are you today?