PreAuthorize("hasAnyAuthority
时间: 2023-10-20 16:31:18 浏览: 225
spel-maven-plugin:Maven插件,可在构建过程中扫描您的源代码,并在PreAuthorize等注释中查找Spring Expressions并对其进行验证
@PreAuthorize("hasAnyAuthority")是Spring Security框架中的一个注解,用于在访问接口时对当前登录用户所拥有的角色进行权限鉴定。该注解可以检查当前用户是否具有指定的权限,如果具有权限则允许访问接口,否则返回403错误。
具体的鉴权过程如下:
1. 首先,该注解会调用hasAnyAuthority方法。
2. 在hasAnyAuthority方法中,会调用hasAnyAuthorityName方法。该方法用于检查传入的权限字符串是否在当前用户的权限集合中。
3. 在hasAnyAuthorityName方法中,会调用getAuthoritySet方法。该方法用于获取当前用户所拥有的角色的所有权限。
4. 在getAuthoritySet方法中,会通过authentication.getAuthorities()方法从数据库中获取当前用户所拥有的角色的所有权限。
5. 最后,hasAnyAuthorityName方法会将传入的权限字符串与权限集合进行比对,判断是否具有该权限。
总结起来,@PreAuthorize("hasAnyAuthority")注解的作用是从数据库中查询当前登录用户的所有权限,并交给Spring Security进行管理。通过该注解可以判断指定的权限是否在当前登录用户的权限集合中,如果在则返回200,否则返回403。
需要注意的是,该注解的权限判断依赖于Spring Security框架和数据库中保存的用户权限信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Spring-Security@PreAuthorize("hasAuthority('')")源码分析](https://blog.csdn.net/guoke2017/article/details/94439661)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [spel-maven-plugin:Maven插件,可在构建过程中扫描您的源代码,并在PreAuthorize等注释中查找Spring ...](https://download.csdn.net/download/weixin_42110469/18852483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文