shiro jsp标签的使用
时间: 2025-05-28 07:50:27 浏览: 14
### Shiro 框架中 JSP 标签的使用方法
#### 1. **引入 Shiro 标签库**
在 JSP 页面中使用 Shiro 提供的标签之前,需要先引入 Shiro 的标签库。通过以下代码声明标签库:
```jsp
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
```
此语句的作用是告诉 JSP 引擎加载 Shiro 的自定义标签库,并为其设置前缀 `shiro`[^1]。
#### 2. **常用 Shiro 标签及其功能**
##### (1)`<shiro:hasRole>` 标签
用于检测当前用户是否拥有指定的角色。如果有,则显示标签体内的内容;如果没有,则忽略。
```jsp
<shiro:hasRole name="admin">
<!-- 如果用户有 admin 角色 -->
<button>删除</button>
</shiro:hasRole>
```
当页面渲染时,Shiro 自动调用 `doGetAuthorizationInfo` 方法获取用户的授权信息,并据此决定是否渲染按钮[^3]。
##### (2)`<shiro:lacksRole>` 标签
与 `<shiro:hasRole>` 相反,用于检测当前用户是否缺少指定角色。
```jsp
<shiro:lacksRole name="admin">
<!-- 如果用户没有 admin 角色 -->
<p>您无权访问此功能。</p>
</shiro:lacksRole>
```
##### (3)`<shiro:hasPermission>` 标签
用于检测当前用户是否具备某种权限。
```jsp
<shiro:hasPermission name="user:create">
<!-- 如果用户有 user:create 权限 -->
<a href="/createUser">创建用户</a>
</shiro:hasPermission>
```
##### (4)`<shiro:lacksPermission>` 标签
与 `<shiro:hasPermission>` 相反,用于检测当前用户是否缺乏某种权限。
```jsp
<shiro:lacksPermission name="user:create">
<!-- 如果用户没有 user:create 权限 -->
<p>您无法创建新用户。</p>
</shiro:lacksPermission>
```
##### (5)`<shiro:user>` 和 `<shiro:guest>`
- `<shiro:user>`:仅当用户已登录时才显示其内部的内容。
- `<shiro:guest>`:仅当用户未登录时才显示其内部的内容。
```jsp
<shiro:user>
<p>欢迎您,<shiro:principal /></p>
</shiro:user>
<shiro:guest>
<p>请<a href="/login">登录</a>以继续。</p>
</shiro:guest>
```
#### 3. **注意事项**
- 在使用 Shiro 标签时,需确保项目中已经正确配置了 ShiroFilter 并启用了相应的过滤规则[^5]。
- 若页面中有多个 Shiro 标签,每次都会触发 `doGetAuthorizationInfo` 方法来验证权限。因此,在实际开发中应优化该方法的性能,例如加入缓存机制[^3]。
---
### 示例代码展示
以下是一个综合使用的示例:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Shiro JSP 标签示例</title>
</head>
<body>
<h1>欢迎来到管理系统</h1>
<shiro:user>
<p>您好:<shiro:principal /></p>
</shiro:user>
<shiro:guest>
<p><a href="/login">点击此处登录</a></p>
</shiro:guest>
<hr />
<shiro:hasRole name="admin">
<button onclick="location.href='/https/wenku.csdn.net/delete'">删除记录</button>
</shiro:hasRole>
<shiro:hasPermission name="user:create">
<a href="/createUser">创建新用户</a>
</shiro:hasPermission>
<shiro:lacksPermission name="user:create">
<p>抱歉,您没有权限创建新用户。</p>
</shiro:lacksPermission>
</body>
</html>
```
---
### 总结
Shiro 提供了一套简单易用的 JSP 标签库,能够方便地实现界面级别的权限控制。通过这些标签,开发者可以在前端层面屏蔽掉未经授权的操作入口,从而提升用户体验的同时也增强了系统的安全性[^1]。
---
阅读全文
相关推荐


















