@PreAuthorize 權(quán)限控制的原理

@PreAuthorize 注解,顧名思義是進入方法前的權(quán)限驗證,@PreAuthorize 聲明這個方法所需要的權(quán)限表達(dá)式,例如:@PreAuthorize("hasAuthority('sys:dept:delete')"),

根據(jù)這個注解所需要的權(quán)限,再和當(dāng)前登錄的用戶角色所擁有的權(quán)限對比,如果用戶的角色權(quán)限集Set中有這個權(quán)限,則放行;沒有,拒絕

看代碼:

跟進hasAuthority方法

但是,問題來了,這個用戶的角色權(quán)限Set,是什么時候存入的,其流程如下:

附上代碼:



AbstractUserDetailsAuthenticationProvider 實現(xiàn)了 AuthenticationProvider.authenticate(Authentication authentication)


DaoAuthenticationProvider?extends AbstractUserDetailsAuthenticationProvider,所以要實現(xiàn)父類抽象方法retrieveUser()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容