一、项目说明
项目环境:jdk1.7+tomcat7+idea2018+maven+shiro1.3.2
源代码github地址:https://github.com/tmAlj/shiro/tree/master/ssms
实现目标:通过在页面使用部分shiro中jsp标签,实现相应的效果,达到对shiro的jsp标签的使用与理解
综合实例:基于shiro的按钮级别的权限管理系统
二、Shiro标签说明
注:需要使用shiro中的标签时先要通过<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>导入,实际中一般只会使用部分简单的标签,如果在页面通过标签实现权限控制等,将会导致页面冗余等
(1)guest标签:用户没有身份验证时显示相应信息,即游客访问信息
(2)user标签:用户已经身份验证/记住我登录后显示相应的信息
(3)authenticated标签 :用户已经身份验证通过,即Subject.login登录成功,不是记住我登录的
(4)notAuthenticated标签 :用户已经身份验证通过,即没有调用Subject.login进行登录,包括记住我自动登录的也属于未进行身份验证
(5)principal标签 :显示用户身份信息,默认调用Subject.getPrincipal()获取,即Primary Principal
(6)lacksPermission标签 :如果当前Subject没有权限将显示body体内容
(7)hasRole标签 :如果当前Subject有角色将显示body体内容
(8)hasAnyRoles标签 :如果当前Subject有任意一个角色(或的关系)将显示body体内容
(9)lacksRole标签 :如果当前Subject没有角色将显示body体内容
(10)hasPermission标签 :如果当前Subject有权限将显示body体内容
三、标签使用示例
注:本节所有实例基于shiro学习笔记十:shiro授权流程
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--导入shiro标签库--%>
<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<html>
<head>
<title>欢迎</title>
</head>
<%--shiro标签principal的使用--%>
<h1>恭喜您:<shiro:principal/>,您登录成功啦!</h1>
<%--shiro标签hasRole的使用--%>
<shiro:hasRole name="admin">
<a href="admin.jsp">进入admin</a>
</shiro:hasRole>
<shiro:hasRole name="user">
<a href="user.jsp">进入user</a>
</shiro:hasRole>
<a href="logout">退出登录</a>
<body>
</body>
</html>
四、测试示例
注:因为在welcom.jsp页面使用了principal和hasRole标签,使用user/123456(user角色)和admin/123456(admin角色)登录成功后会看到用户名和不同的操作选项
(1)登录/login.jsp
(2)admin用户登录成功
(3)user用户登录成功