Shiro系列十一:权限标签

 Shiro 提供了 JSTL 标签用于在 JSP 页面进行权限控制,如根据登录用户显示相应的页面按钮。 需要在JSP 中导入 shiro 的标签库:<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>

一、常用标签
guest 标签:用户没有身份验证时显示相应信息,即游客访问信息。
Shiro系列十一:权限标签_第1张图片
user 标签:用户已经经过认证或记住我登录后显示相应的信息。
在这里插入图片描述
authenticated 标签:用户已经身份验证通过,即 Subject.login登录成功,不是记住我登录的。
Shiro系列十一:权限标签_第2张图片
notAuthenticated 标签:用户未进行身份验证,即没有调用Subject.login进行登录,包括记住我自动登录的也属于未进行身份验证。
在这里插入图片描述
pincipal 标签:显示用户身份信息,默认调用 Subject.getPrincipal() 获取,即 Primary Principal。
在这里插入图片描述
hasRole 标签:如果当前 Subject 有角色将显示 body 体的内容。
在这里插入图片描述
hasAnyRoles 标签:如果当前Subject有任意一个 角色将显示body体的内容。
Shiro系列十一:权限标签_第3张图片
lacksRole:如果当前 Subject 没有角色将显示 body 体的内容。
Shiro系列十一:权限标签_第4张图片
hasPermission:如果当前 Subject 有权限将显示 body 体的内容。
Shiro系列十一:权限标签_第5张图片
lacksPermission:如果当前Subject没有权限将显示body体的内容。
在这里插入图片描述
二、使用标签

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>    
    




Insert title here


	
	

List Page

Welcome:

Admin Page


User Page


Logout

三、源码解析
1、标签
(1)、找到标签,按住Ctrl打开shiro.tld
Shiro系列十一:权限标签_第6张图片
(2)、处理此标签的类是 org.apache.shiro.web.tags.PrincipalTag
Shiro系列十一:权限标签_第7张图片
(3)、获取门面对象Subject对象,拿到Subject对象里面的主凭证。主凭证可能是一个对象,比如user对象,将其地址 username 属性作为主凭证,那么可以这样配置:
Shiro系列十一:权限标签_第8张图片
(4)、将数据刷新到JSP页面中。
Shiro系列十一:权限标签_第9张图片
2、标签
Shiro系列十一:权限标签_第10张图片
获取到当前Shiro环境的Subject对象,再判断当前登录用户是否有此角色。返回1则页面显示,返回0则页面不显示。
在这里插入图片描述
3、标签
在这里插入图片描述

你可能感兴趣的:(Shiro)