1.首先自建乙個demo上上手(使用者登入認證)
******accountrealm ******accountrealm = new ******accountrealm();
@before
public void adduser()
@test
public void testauthentication()
2.接著來乙個使用者角色認證
******accountrealm ******accountrealm = new ******accountrealm();
@before
public void adduser()
@test
public void testauthentication()catch(exception e)
}
通過上面兩個小案列,可以看到:
在使用者登入和鑑權的時候,
defaultsecuritymanager defaultsecuritymanager = new defaultsecuritymanager(); defaultsecuritymanager.setrealm(******accountrealm);
securityutils.setsecuritymanager(defaultsecuritymanager);
subject subject = securityutils.getsubject();
usernamepasswordtoken token = new usernamepasswordtoken("ljj","123"); subject.login(token);
這些操作是少不了的。反正就是根據得到的使用者資料和本身存在的使用者資料進行比對。一致就成功。不一致就丟擲異常。
那麼接下來目的就很明顯了,既然可通過自建使用者來鑑權使用者。那麼也可以通過在資料庫中查詢使用者來進行比對。那麼問題有來了,既然是去資料庫中查詢,那麼鑑權的方式自然是需要自定義的了。因此,此處需要自定義reaml。
public class realmtest extends authorizingrealm
/*** 使用者登入鑑定
* @param token
* @return
* @throws authenticationexception
*/@override
protected authenticationinfo dogetauthenticationinfo(authenticationtoken token) throws authenticationexception
很明顯的可以看到,自定義的類必須繼承authorizingrealm,然後重寫它的兩個方法:dogetauthorizationinfo和dogetauthenticationinfo。在dogetauthenticationinfo中,我們進行使用者登入鑑定;在dogetauthorizationinfo中,我們進行
角色許可權鑑定。有了這個自定義的realm之後,我們再去進行驗證。
@test
public void testtestauthentication()catch(exception e)
trycatch(exception e)
}
可以看到:
//構建securitymanager環境
defaultsecuritymanager manger = new defaultsecuritymanager();
manger.setrealm(realmtest);
securityutils.setsecuritymanager(manger);
subject subject = securityutils.getsubject();
usernamepasswordtoken usernamepasswordtoken = new usernamepasswordtoken("ljj","123");
subject.login(usernamepasswordtoken);
這些**仍然是必須的,但是,在這些**之前,加上了
realmtest realmtest = new realmtest();
這說明,我們需要把之前定義好的realm,重新放入securitymanager環境。
當程式走進subject.login(usernamepasswordtoken);的時候,會先進入
dogetauthenticationinfo方法,然後再進入
dogetauthorizationinfo。也就是說,使用者登入先鑑定,然後再進行角色和許可權的鑑定。其中,login方法是怎麼走到這兩個方法裡面的,此處暫不作調查。只需記住此類操作規範即可。後續會逐步研究shiro的底層,然後逐一解惑。
注意:如果運算元據庫來驗證的話,必須要配合shrioconfig來使用。因為操作dao層得先載入bean。
這是非常需要注意的
Shiro的初步認識
shiro主要是用來對使用者的登入 許可權進行管理,可以實現使用者的認證授權。shiro和spring security的區別 shiro使用簡單,輕量級,可以在b s c s系統中使用,不依賴spring spring security 原名是acegi 僅僅是乙個許可權框架,和spring依賴很...
類的初步認識
c 一直被稱為是比c更高階的語言,為什麼呢?恐怕就是因為具有物件導向的設計思想,它 將萬千變化 錯綜複雜的外部環境有組織的 有規律的整合在了一起。從規律上,我們引入 了類的概念,將原本複雜的外部環境按照一定的規律和相似點,劃分為不同的類,常言道 物以類聚,鳥易群分嘛。我們在將類有機的進行區別和管理 ...
程序的初步認識
程序是作業系統結構的基礎 是乙個正在執行的程式 計算機中正在執行的程式例項 可以分配給處理器並由處理器執行的乙個實體 由單一順序的執行顯示,乙個當前狀態和一組相關的系統資源所描述的活動單元。在程式的實現中,程序使用大有裨益。1.程序的建立函式 fork vfork 前者父子程序執行順序不定。2.在子...