一、原始碼解讀(本文使用idea的截圖)
1、我們在登入控制層經常會寫這麼一段
usernamepasswordtoken token = new usernamepasswordtoken(username, password);
subject subject = securityutils.getsubject();
try catch (authenticationexception e)
探索login裡面到底發生了什麼?
全域性搜尋找到這個實現subject類
public class webdelegatingsubject extends delegatingsubject implements websubject
發現login在其父類delegatingsubject 中。
或者ctrl+alt+b 進入到login方法(第乙個感覺邏輯能清晰一點)
2)login原始碼
public void login(authenticationtoken token) throws authenticationexception else
if (principals != null && !principals.isempty())
if (host != null)
session session = subject.getsession(false);
if (session != null) else
} else
}
subject subject = this.securitymanager.login(this, token);
public subject login(subject subject, authenticationtoken token) throws authenticationexception catch (authenticationexception var7) catch (exception var6)
}throw var7;
}subject loggedin = this.createsubject(token, info, subject);
this.onsuccessfullogin(token, info, loggedin);
return loggedin;
}
shiro登入流程原始碼分析
分析整個登入流程,以token去向為線索,層層追蹤,直到跟我們自定義的realm驗證方法結合。subject subject securityutils.getsubject subject.login token 這裡的token收集方式不重要 可能是從頁面傳遞上來的使用者名稱和密碼或者其他的方式...
Shiro 原始碼分析
shiro 是乙個非常優秀的開源專案,原始碼非常值得學習與研究。我想嘗試做一次 不一樣 的原始碼分析 原始碼分析不再是乙個人的自我享受,而是大家共同 與相互學習。目錄shiro 之 入口 environmentloaderlistener 由 黃勇 分享 shiro 之 filter 上 shiro...
Shiro原始碼之SecurityManager
securitymanager繼承了三個介面,分別是認證 授權 session管理。認證授權是安全框架最核心的功能,而shiro還提供了自身的session管理機制。這裡,需要去學習一般框架的基礎設計,介面的劃分。factoryfactory new inisecuritymanage ctory ...