先上一个目录结构 //权限管理模块 // 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 框架 实现登录后 自己开发的 登录 就无需再用了