SpringBoot和SpringCloud 使用Spring security 安全框架 详情
先上一个目录结构
//权限管理模块
// 1. 创建一个权限管理的子模块
//2. 引入相关依赖
// <dependencies>
//<!-- 自定义的模块 安全框架 security-->
// <dependency>
// <groupId>com.schoolWeb</groupId>
// <artifactId>spring_security</artifactId>
// <version>0.0.1-SNAPSHOT</version>
// </dependency>
// <dependency>
// <groupId>com.alibaba</groupId>
// <artifactId>fastjson</artifactId>
// </dependency>
// </dependencies>
//3. 创建一个 权限管理的模块 编写相对应的权限代码 代码比较固定 分享到git 上了
//主要是 菜单管理 角色管理 分配权限 等常用功能
//4. 创建一个 spring_security模块 放在了 common模块里了 他是公共的 代码比较固定 分享到git 上了
// Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。提供了完善的认证机制和方法级的授权功能
// 本质就是过滤器 filter
// 用于 用户认证 和用户授权 两部分
// 如果是基于Session 那么 Spring Security 会对cookie里的sessionid进行解析认证
// 如果是token 则会解析token 然后将当前请求加入到Spring Security 管理的权限信息里去
// 这个玩意 帮我们 取值 放值 帮我们 管理 token 或者 session 不需要我们 自己再去具体实现
// 如果系统的模块众多 每个模块都需要认证 用户根据用户密码进行认证 然后获取一系列的权限 并已用户名为key
// 权限为value的形式存入redis里 根据用户的header头部里的token, Spring Security 解析token 这样判断是否有请求权限
//5. 引入spring_security 的相关依赖
// <dependencies>
//<!-- 自定义的工具类-->
// <dependency>
// <groupId>com.schoolWeb</groupId>
// <artifactId>common_utils</artifactId>
// <version>0.0.1-SNAPSHOT</version>
// </dependency>
// <!-- Spring Security依赖 -->
// <dependency>
// <groupId>org.springframework.boot</groupId>
// <artifactId>spring-boot-starter-security</artifactId>
// </dependency>
//
// <dependency>
// <groupId>io.jsonwebtoken</groupId>
// <artifactId>jjwt</artifactId>
// </dependency>
// </dependencies>
//6. 整合 spring security 框架 具体实现类
//7. 需要一个md5 和ResponseUtil 工具类
//8. 需要配置核心配置类的退出地址 TokenWebSecurityConfig.java
//9. 实现 security提供的UserDetails 接口 SecurityUser.java
//10. 登录校验认证过滤器 配置登录地址 TokenLoginFilter.java
//11. 授权过滤器
//12. 配置好 spring security 框架后 把这个 模块引入到你某个的模块下( 就是步骤2 那个依赖)
// 比如 你 创建的 权限管理模块(acl) 这个模块下
// 就可以引入到这个模块下 在这个模块具体使用spring security 下的功能 比如查询用户数据库
//13. 需要创建一个查询登录和用户权限的实现类 这个类 需要实现 spring security 下的 UserDetailsService 的接口
// 具体实现查询验证 用户登录 得到数据
// 注: 使用这种框架 思想为 :面向接口发开 或者 面向 spring security 开发
// 帮我们 实现了 验证 和授权登录 我们只需要 修改配置文件和 查询数据库数据 验证成功就行了
// 使用了这个security 框架 实现登录后 自己开发的 登录 就无需再用了