权限管理是每个项目必备的功能,只是各自要求的复杂程度不同,简单的项目可能一个 Filter 或 Interceptor 就解决了,复杂一点的就可能会引入安全框架,如 Shiro, Spring Security 等。
其中 Spring Security 因其涉及的流程、类过多,看起来比较复杂难懂而被诟病。但如果能捋清其中的关键环节、关键类,Spring Security 其实也没有传说中那么复杂。本文结合脚手架框架的权限管理实现(jboost-auth 模块),对 Spring Security 的认证、授权机制进行深入分析。

现在很多 Web 项目,包括普通的前后端分离项目,微服务项目,都基于 Spring Boot 搭建,项目中一般需要包含一些通用的特性或功能,如统一异常处理、切面日志功能、权限管理功能等。写一个自己的脚手架,对一些基本规范、基础功能进行沉淀,基于此可只需要关注业务实现,提高开发效率。

目前整个脚手架包含三部分:

  1. 基础组件:对单个项目(服务)的一些基本特性、功能等进行封装,便于复用,或达到常说的“开箱即用”
  2. Spring Boot 单体项目脚手架:基于基础组件,提供常见的一些基础通用功能实现的单体项目框架,如权限管理,提供前后端分离的后端 Spring Boot 项目与前端 Vue 项目
  3. Spring Cloud(包含 Spring Cloud Alibaba)微服务项目框架:基于基础组件,提供微服务框架的基础组件与功能实现,如网关(Spring Cloud Gateway),服务注册中心与配置管理(Nacos),服务限流降级(Sentinel),统一权限管理(Spring Security Oauth2)等。

本项目还在持续完善中,本篇为基础组件介绍。