Apache Shiro 是一个开源的轻量级的
Java 安全框架,它提供身份验证、授权、密码管理以及会话管理等功能。相对于
Spring Security,
Shiro 框架更加直观、易用,同时也能提供健壮的安全性。
在传统的
SSM 框架中,手动整合
Shiro 的配置步骤还是比较多的,针对
Spring Boot,
Shiro 官方提供了
shiro-spring-boot-web-starter 用来简化
Shiro 在
Spring Boot 中的配置。下面通过样例进行演示。
首先编辑项目的
pom.xml文件,添加
Shiro依赖以及页面模板依赖:
- shiro-spring-boot-web-starter:Shiro 依赖
- spring-boot-starter-thymeleaf:Thymeleaf 依赖,本样例使用了 Thymeleaf 模版。
- thymeleaf-extras-shiro:实现在 Thymeleaf 中使用 shiro 标签。
注意: 这里不需要添加
spring-boot-starter-web 依赖,因为
shiro-spring-boot-web-starter 中已经依赖了
spring-boot-starter-web
(1)首先在
application.properties中配置
Shrio的基本信息:
# 开启 Shrio 配置,默认为 true
shiro.enabled=true
# 开启 Shrio Web 配置,默认为 true
shiro.web.enabled=true
# 配置登录地址,默认为"login.jsp"
shiro.loginUrl=/login
# 配置登录成功地址,默认为"/"
shiro.successUrl=/index
# 配置未获授权默认跳转地址
shiro.unauthorizedUrl=/unauthorized
# 是否允许通过 URL 参数实现会话跟踪,默认为 true。如果网站支持 Cookie,可以关闭次选项。
shiro.sessionManager.sessionIdUrlRewritingEnabled=true
# 是否允许通过 Cookie 实现会话跟踪,默认为 true。
shiro.sessionManager.sessionIdCookieEnabled=true
(2)接着在
Java代码中配置
Shrio,其中最关键的是开头提供的两个
Bean:
(1)创建一个
Controller 用于配置登录接口以及相关页面的访问接口:
(2)对于其他不需要角色就能访问的接口,直接在
WebMvc中配置即可:
全局异常处理器可以进行全局异常处理,本样例主要是处理授权异常:
(1)
login.html 是一个普通的登录页面,登录失败时通过一个
div 显示登录失败信息:
(2)
index.html是登录成功后的首先展示当前登录用户的登录名,以及一个“
注销登录”链接,同时:
- 如果当前登录用户具备“admin”角色,则展示一个“管理员页面”的超链接
- 如果当前用户具备“admin”或者“user”角色,则展示一个“普通用户页面”的超链接
(3)
admin.html是一个普通的管理员信息展示页面:
(4)
user.html是一个普通的用户信息展示页面:
(5)
unauthorized.html是一个授权失败的展示页面,该页面还会展示授权出错的信息。
(1)启动项目,访问登录页(随便访问任意一个接口都会跳到登录页):

(2)使用
hangge 用户登录,由于该用户不具备
admin 角色,因此登录成功后的页面没有“
管理员页面”超链接:

(3)点击“
普通用户页面”链接即可进入普通用户页面:

(4)由于该用户不具备
admin角色,如果我手动在浏览器地址拦输入“
http://localhost:8080/admin”访问管理员页面,则会跳转到未授权页面。

版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/8570.html