[email protected]("hasAuthority('')") 原始碼分析
theme: channing-cyan
本文已參與「新人創作禮」活動,一起開啟掘金創作之路。
@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;