标签式授权
-
Shiro提供了一套JSP标签库来实现页面级的授权控制
-
在使用Shiro标签库前,首先需要在JSP引入shiro标签
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
- 标签
标签 | 说明 |
---|---|
< shiro:guest > | 验证当前用户是否为“访客”,即未认证(包含未记住)的用户 |
< shiro:user > | 认证通过或已记住的用户 |
< shiro:authenticated > | 已认证通过的用户。不包含已记住的用户,这是与user标签的区别所在 |
< shiro:notAuthenticated > | 未认证通过用户。与guest标签的区别是,该标签包含已记住用户 |
< shiro:principal /> | 输出当前用户信息,通常为登录帐号信息 |
< shiro:hasRole name="角色"> | 验证当前用户是否属于该角色 |
< shiro:lacksRole name="角色"> | 与hasRole标签逻辑相反,当用户不属于该角色时验证通过 |
< shiro:hasAnyRoles name="a,b"> | 验证当前用户是否属于以下任意一个角色 |
<shiro:hasPermission name=“资源”> | 验证当前用户是否拥有制定权限 |
<shiro:lacksPermission name="资源"> | 与permission标签逻辑相反,当前用户没有制定权限时,验证通过 |
- 修改home.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<h6>
<a href="${pageContext.request.contextPath}/logout">退出</a>
<shiro:hasRole name="admin">
<a href="${pageContext.request.contextPath}/order-list">列表</a>
</shiro:hasRole>
<shiro:hasPermission name="order:add">
<a href="${pageContext.request.contextPath}/order-add">添加</a>
</shiro:hasPermission>
</h6>
</body>
</html>