Shiro 提供了 JSTL 标签库用于 Jsp 页面进行权限控制,如根据登录用户的角色对应的权限显示相应的页面按钮。只需在 Jsp 中引入下面标签库即可使用:
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
常用标签如下:
shiro:guest
用户没有身份验证时显示相应信息,即游客访问信息。
<shiro:guest>
欢迎游客访问,<a href='/login.jsp'>登录
</shiro:guest>
shiro:user
用户已经经过认证或通过“记住我”登录后显示相应的信息。
<shiro:user>
欢迎[<shiro:principal/>]访问,<a href='/logout'>退出</a>
</shiro:user>
shiro:authenticated
用户已经身份验证通过,即通过 Subject.login
方法登录成功,非记住我登录。
<shiro:authenticated>
用户[<shiro:principal/>]身份验证已通过
</shiro:authenticated>
shiro:notAuthenticated
用户未进行身份验证,即没有通过 Subject.login
进行登录,包括通过“记住我”自动登录的也属于未进行身份验证。
<shiro:notAuthenticated>
未进行身份验证(包括记住我)
</shiro:notAuthenticated>
shiro:principal
显示用户身份信息,默认调用 Subject.getPrincipal
方法获取,即 Primary Principal
。
<shiro:principal property="username"/>
shiro:hasRole
如果当前 Subject
有指定角色将显示标签内的内容。
<shiro:hasRole name="admin">
用户[<shiro:principal/>]拥有角色 admin
</shiro:hasRole>
shiro:hasAnyRoles
如果当前 Subject
有任意一个角色,则显示标签内内容。
<shiro:hasAnyRoles name="admin,user">
用户[<shiro:principal/>]拥有角色 admin 或 user
</shiro:hasAnyRoles>
shiro:lacksRole
如果当前 Subject
没有指定角色将显示标签内内容。
<shiro:lacksRole name="admin">
用户[<shiro:principal/>]没有角色 admin
</shiro:lacksRole>
shiro:hasPermission
如果当前 Subject
有指定权限将显示标签内内容。
<shiro:hasPermission name="user:create">
用户[<shiro:principal/>]拥有权限 user:create
</shiro:hasPermission>
shiro:acksPermission
如果当前 Subject
没有指定权限将显示标签内内容。
<shiro:lacksPermission name="org:create">
用户[<shiro:principal/>]没有权限 org:create
</shiro:lacksPermission>
评论区