Spring Security的一些簡單理解

實踐背景:

接手師兄的系統(tǒng),原本系統(tǒng)做過權(quán)限認證?,F(xiàn)在需要我完成與另一個系統(tǒng)的集成,而兩個系統(tǒng)的用戶角色等不一致,都是單獨做的權(quán)限認證。所以想做一種機制,針對來自該集成系統(tǒng)的資源訪問請求,我們的系統(tǒng)給他分配一個默認的權(quán)限,不需要進一步做權(quán)限控制。因為之前沒有做過權(quán)限認證相關(guān)的設(shè)計,對Spring security的了解只基于demo進行實踐的程度,此處可能會涉及到過濾器的配置等問題,因此深究一下其原理。

Spring security的認證規(guī)則:

1.Spring Security中每個URL都是一個資源,當系統(tǒng)啟動的時候,Spring Security會根據(jù)配置將所有的URL與訪問這個URL所需要的權(quán)限的映射數(shù)據(jù)加載到Spring security中。

2.當一個請求訪問一個資源(URL)時,Spring Security會判斷這個資源是否需要權(quán)限驗證。如果不需要 ,那么直接進行訪問即可。

3.如果這個URL需要進行權(quán)限驗證,那么Spring Security會檢查當前請求來源所屬用戶是否登錄,如果沒有登錄,則跳轉(zhuǎn)到登錄頁面,進行登錄操作,并加載這個用戶的相關(guān)信息。

相當于我在接收來自HIS的請求的時候,給他設(shè)置成默認登錄狀態(tài),直接帶上用戶信息,這樣就不需要再次進行登錄了,只要是來自HIS的請求,都賦給它一個默認的用戶信息,不用進行二次登錄。

前臺獲取到用戶信息,直接實例化后臺用戶信息,把后臺也設(shè)置成登錄狀態(tài),這樣就不用再跳轉(zhuǎn)到登錄界面進行登錄了。但是有個問題,我在通過controller接收請求的時候,是否已經(jīng)進入權(quán)限保護的范圍,如果是這樣的話,設(shè)置登錄狀態(tài)等操作就沒法進行,簡單來說就是我在controller里面寫分配給HIS端用戶的默認登錄信息的內(nèi)容已經(jīng)屬于后臺資源的一部分了,因此是否我沒法在此之前進行該操作。

解決辦法:1.還是默認登錄到login界面。只是說核查單系統(tǒng)的登錄操作不需要手動進行了,直接通過HIS中URL傳遞過來的參數(shù)進行自動登錄。跳轉(zhuǎn)還是按原來的操作先跳轉(zhuǎn)到login界面,只是說,HIS用戶的登錄操作我?guī)退麄兺瓿闪恕6到y(tǒng)原本的用戶還是需要按原本的流程進行登錄。

4.如果登錄,那么判斷這個用戶所擁有的權(quán)限是否包含訪問這個資源(URL)所需要的權(quán)限,如果有則允許訪問。

5.如果沒有權(quán)限,那么就給出相應(yīng)的提示信息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容