轻松搞定安全框架(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; |