轻松搞定安全框架(Shiro)
SpringBoot
是为了简化Spring
应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程
Shiro 是 Apache
旗下开源的一款强大且易用的Java安全框架,身份验证、授权、加密、会话管理。 相比 Spring Security
而言 Shiro
更加轻量级,且 API 更易于理解…
Shiro
Shiro
主要分为 安全认证 和 接口授权 两个部分,其中的核心组件为 Subject
、SecurityManager
、Realms
,公共部分 Shiro
都已经为我们封装好了,我们只需要按照一定的规则去编写响应的代码即可…
Subject
即表示主体,将用户的概念理解为当前操作的主体,因为它即可以是一个通过浏览器请求的用户,也可能是一个运行的程序,外部应用与 Subject 进行交互,记录当前操作用户。Subject 代表了当前用户的安全操作,SecurityManager 则管理所有用户的安全操作。SecurityManager
即安全管理器,对所有的 Subject 进行安全管理,并通过它来提供安全管理的各种服务(认证、授权等)Realm
充当了应用与数据安全间的 桥梁 或 连接器。当对用户执行认证(登录)和授权(访问控制)验证时,Shiro 会从应用配置的 Realm 中查找用户及其权限信息。
本章目标
利用 Spring Boot
与 Shiro
实现安全认证和授权….
导入依赖
依赖 spring-boot-starter-web
…
1 |
<properties> |
属性配置
缓存配置
Shiro 为我们提供了 CacheManager
即缓存管理,将用户权限数据存储在缓存,可以提高它的性能。支持 EhCache
、Redis
等常规缓存,这里为了简单起见就用 EhCache
了 , 在resources
目录下创建一个 ehcache-shiro.xml
文件
1 |
<?xml version="1.0" encoding="UTF-8"?> |
实体类
创建一个 User.java
,标记为数据库用户
1 |
package com.battcn.entity; |
伪造数据
支持 roles
、permissions
,比如你一个接口可以允许用户拥有某一个角色,也可以是拥有某一个 permission
…
1 |
package com.battcn.config; |
ShiroConfiguration
Shiro 的主要配置信息都在此文件内实现;
1 |
package com.battcn.config; |