目标
在原公司有专门的登录验证和权限管理服务,换公司后在最近项目中需要使用Spring Security自主实现分布式系统的用户验证授权及权限验证功能,因此花了两天时间研究并实现了该方案:
功能点细分:
1. 基于REST请求的登录
2. 用户名密码验证及验证成功后给用户授权
3. http请求的权限配置和验证
4. 方法级别的权限配置和验证
5. 分布式环境中用户权限共享
分析及实现
一、基于REST请求的登录
1.1 分析
Spring Security默认是通过表单提交用户登录请求,可通过修改配置实现自定义登录请求
1.2 实现
在spring-security.xml中配置如下为自定义的登录入口,并在entry-point-ref中配置登录url(只需关注红框标注部分)
注:中别的配置将在下文中分别介绍
二、用户名密码验证及验证成功后给用户授权
2.1 分析
Spring Security的底层是通过一系列Filter管理的,当我们使用NameSpace时,Spring Security会自动创建FilterChain及默认包含的Filter。其中几个关键Filter的位置和作用如下,完整信息可参考(