@PreAuthorize 权限控制的原理

@PreAuthorize 注解,顾名思义是进入方法前的权限验证,@PreAuthorize 声明这个方法所需要的权限表达式,例如:@PreAuthorize("hasAuthority('sys:dept:delete')"),

根据这个注解所需要的权限,再和当前登录的用户角色所拥有的权限对比,如果用户的角色权限集Set中有这个权限,则放行;没有,拒绝

看代码:

跟进hasAuthority方法

但是,问题来了,这个用户的角色权限Set,是什么时候存入的,其流程如下:

附上代码:



AbstractUserDetailsAuthenticationProvider 实现了 AuthenticationProvider.authenticate(Authentication authentication)


DaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider,所以要实现父类抽象方法retrieveUser()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容