SpringSecurity安全框架学习——@PreAuthorize的实现原理
@PreAuthorize
首先我们打开@PreAuthorize注解的源码,然后按住Ctrl并单击PreAuthorize,可以看到在EnableMethodSecurity注解中有引用
(本文使用IDEA,后续不再复述)
@EnableMethodSecurity
查看EnableMethodSecurity源码,可以到,其引用了MethodSecuritySelector
MethodSecuritySelector
按照惯例,打开MethodSecuritySelector
PrePostMethodSecurityConfiguration
可以看到,当prePostEnabled=true时,会注入PrePostMethodSecurityConfiguration,而在PrePostMethodSecurityConfiguration中会各类型拦截器进行注入,其中包括了PreAuthorize,也包括了postAuthorize等,那我们本节专门针对@preAuthorize注解进行学习,所以我们找到这段代码:
可以进一步找到PreAuthorizeAuthorizationManager(预授权方法管理器),在预授权处理器中,要分两步讲解,第一是缓存,当某个请求方法第一次被请求时,会执行下面代码,之后则直接从缓存中获取(缓存实现原理请自行查看源码,严重超纲)。
第二是进行校验,也就是AuthorizationManager接口的实现方法check
以上就是Spring Security5.6版本实现@PreAuthorize注解的原理
版权归原作者 笔落墨成 所有, 如有侵权,请联系我们删除。