shiro登入流程原始碼詳解(手把手帶你讀原始碼)

2021-10-09 11:56:05 字數 1323 閱讀 6393

一、原始碼解讀(本文使用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 ...