本文主要是介绍Spring Security @PreAuthorize 权限控制的原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
亲测可用,若有疑问请私信
@PreAuthorize 注解,顾名思义是进入方法前的权限验证,@PreAuthorize 声明这个方法所需要的权限表达式,例如:@PreAuthorize("hasAuthority('sys:dept:delete')"),
根据这个注解所需要的权限,再和当前登录的用户角色所拥有的权限对比,如果用户的角色权限集Set中有这个权限,则放行;没有,拒绝
看代码:
跟进hasAuthority方法
但是,问题来了,这个用户的角色权限Set,是什么时候存入的,其流程如下:
附上代码:
AbstractUserDetailsAuthenticationProvider 实现了 AuthenticationProvider.authenticate(Authentication authentication)
DaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider,所以要实现父类抽象方法retrieveUser()
这篇关于Spring Security @PreAuthorize 权限控制的原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!