Spring Security源码:https://docs.spring.io/spring-security/site/docs/4.1.0.RELEASE/reference/htmlsingle/#securitycontextholder-securitycontext-and-authentication-objects
这里面解析挺详细的。
Spring Security主要包含以下几个对象:
1.SecurityContextHolder:它主要是为了获得SecurityContext对象
2.SecurityContext:安全上下文,用于保存一些认证的信息,即Authentication对象
3.Authentication:用于保存用户主体,即经过验证的用户信息
4.UserDetails:这个对象我之前一直没有懂,它藏的很深,它主要就是用于通过一些必要信息从数据DAO或者其他途径构建Authentication对象,即通过验证
5.UserDetailsService:它主要是通过传入一个基于String类型的字段(比如登陆的用户名)来创建一个UserDetails对象
6.GrantedAuthority:认证用户的权限,用于构建UserDetails对象
其实我总结Spring Security执行认证授权的步骤如下:
Spring Security官网上说,并不关心是如何将Authentication对象放入到SecurityContext对象中的,但是在认证对象操作相应的权限之前,SecurityContext对象中就应该已经存在了Authentication对象了,所以我们进行相关权限执行的之前,可以自己编写一个过滤器进行验证该权限是否在可执行范围内,即编写一个过滤器,获取到相应权限,然后和认证通过的用户权限进行对比,如果认证通过的用户权限包含操作的权限,那么表示可以进行操作。
网友评论