本文已参与「新人创作礼」活动,一起开启掘金创作之路。
@PreAuthorize
- 用来鉴别当前登录用户所拥有的角色是否有xxx权限访问该接口。
源码分析
- 源码分析
- 第一步方法中 authority 是我们传入的角色权限
- 第二步中直接去调用了第三步,第三步中的
this.getAuthoritySet();
该方法为获取当前用户所拥有角色的所有权限,Collection<? extends GrantedAuthority> userAuthorities = this.authentication.getAuthorities();此行为登录操作时应访问数据库将用户权限放入authentication中,也就是说,这一行将会把该用户所持角色的所有权限都查询出来。(需要事先存进去)
4. this.authentication.getAuthorities() 获取具体角色权限,返回全局private Set<String> roles;
5.
String defaultedRole = getRoleWithDefaultPrefix(prefix, role);
6. 全红部分这块应该是ROLE_admin 类型这样搭配组合使用
使用方式
需要在登陆时候查到角色对应权限存放到 UserDetails类中的private Set<GrantedAuthority> authorities;