jstl标签库
- Shiro提供了jstl标签用于在jsp页面、gsp页面进行权限控制,如根据登录页面显示相应的菜单。
- 导入标签库
<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
guest标签:用户未登录时作为游客处理。
<shiro:guest> 欢迎游客访问,<a href="${pageContext.request.contextPath}/login.jsp">登录</a> </shiro:guest>
user标签:用户已登录(身份验证或记住我)。
<shiro:user> 欢迎[<shiro:principal/>]登录</a> </shiro:user>
authenticated标签:用户已身份验证,不是记住我登录的。
<shiro:authenticated> 用户[<shiro:principal/>]已身份验证通过 </shiro:authenticated>
notAuthenticated标签:用户通过非身份验证方式登录。
<shiro:notAuthenticated> 未身份验证(包括记住我) </shiro:notAuthenticated>
principal标签:显示用户身份信息,默认调用Subject.getPrincipal()。
//相当于Subject.getPrincipals().oneByType(String.class)
<shiro:principal type="java.lang.String"/>
//((User)Subject.getPrincipals()).getUsername()
<shiro:principal property="username"/>
hasRole标签:拥有指定角色将显示body体内容。
<shiro:hasRole name="admin"> 用户[<shiro:principal/>]拥有角色admin<br/> </shiro:hasRole>
hasAnyRoles标签
<shiro:hasAnyRoles name="admin,user"> 用户[<shiro:principal/>]拥有角色admin或user<br/> </shiro:hasAnyRoles>
lacksRole:没有该角色将显示该内容。
<shiro:lacksRole name="abc"> 用户[<shiro:principal/>]没有角色abc<br/> </shiro:lacksRole>
hasPermission
<shiro:hasPermission name="user:create"> 用户[<shiro:principal/>]拥有权限user:create<br/> </shiro:hasPermission>
lacksPermission
<shiro:lacksPermission name="org:create"> 用户[<shiro:principal/>]没有权限org:create<br/> </shiro:lacksPermission>
自定义标签库
//导入自定义标签库
<%@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>