Shiro系列十一:权限标签

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

一、常用标签
guest 标签:用户没有身份验证时显示相应信息,即游客访问信息。
在这里插入图片描述
user 标签:用户已经经过认证或记住我登录后显示相应的信息。
在这里插入图片描述
authenticated 标签:用户已经身份验证通过,即 Subject.login登录成功,不是记住我登录的。
在这里插入图片描述
notAuthenticated 标签:用户未进行身份验证,即没有调用Subject.login进行登录,包括记住我自动登录的也属于未进行身份验证。
在这里插入图片描述
pincipal 标签:显示用户身份信息,默认调用 Subject.getPrincipal() 获取,即 Primary Principal。
在这里插入图片描述
hasRole 标签:如果当前 Subject 有角色将显示 body 体的内容。
在这里插入图片描述
hasAnyRoles 标签:如果当前Subject有任意一个 角色将显示body体的内容。
在这里插入图片描述
lacksRole:如果当前 Subject 没有角色将显示 body 体的内容。
在这里插入图片描述
hasPermission:如果当前 Subject 有权限将显示 body 体的内容。
在这里插入图片描述
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" %>    
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	
	<h4>List Page</h4>
	
	Welcome: <shiro:principal></shiro:principal>
	
	<shiro:hasRole name="admin">
	<br><br>
	<a href="admin.jsp">Admin Page</a>
	</shiro:hasRole>
	
	<shiro:hasRole name="user">
	<br><br>
	<a href="user.jsp">User Page</a>
	</shiro:hasRole>
	
	<br><br>
	<a href="shiro/logout">Logout</a>
	
</body>
</html>

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

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值