接觸和使用shiro還是有好大一段時間,可惜並沒有搞明白其實的原理和機制。因為工作中使用的框架都封裝好了,so......並沒有去研究。
原來一直猜想的是shiro可以直接連線資料庫,驗證使用者名稱和密碼。但是又沒在實體類中找到有什麼特殊的標記註解之類的。
就有點好奇了,於是趁這兩天工作不是那麼緊張了,就跟了下原始碼。
紅色部分是主要**;
usernamepasswordtoken token = new usernamepasswordtoken(user.getusername(), password, rememberme.equals("0") ? false : true);
try catch (authenticationexception e)
將登入委託給subjectmanager
public void login(authenticationtoken token) throws authenticationexception else
if (principals == null || principals.isempty())
this.principals = principals;
this.authenticated = true;
if (token instanceof hostauthenticationtoken)
if (host != null)
session session = subject.getsession(false);
if (session != null) else }
subjectmanager調
authenticate模組進行身份認證
public subject login(subject subject, authenticationtoken token) throws authenticationexception catch (authenticationexception ae) catch (exception e) }
throw ae; //propagate }
subject loggedin = createsubject(token, info, subject);
onsuccessfullogin(token, info, loggedin);
return loggedin; }
/** */
public authenticationinfo authenticate(authenticationtoken token) throws authenticationexception
public final authenticationinfo authenticate(authenticationtoken token) throws authenticationexception
log.trace("authentication attempt received for token [{}]", token);
authenticationinfo info;
try
} catch (throwable t) else }
呼叫重寫的登入方法getauthenticationinfo
protected authenticationinfo dosinglerealmauthentication(realm realm, authenticationtoken token)
authenticationinfo info = realm.getauthenticationinfo(token);
if (info == null)
return info; }
//最後呼叫的還是自己寫的登入驗證
protected authenticationinfo dogetauthenticationinfo(authenticationtoken arg0) else if (stringutils.isblank(us.getusername()) || stringutils.isblank(us.getuserpassword())) else if (!us.getuserpassword().equals(password)) else }
Unix終端登入過程
unix終端登入過程 系統管理員建立通常名為 etc ttys的檔案,檔案中每個終端裝置都有一行用來說明裝置名和傳遞給getty程式的引數 如終端的波特率等等 1.當系統自舉時,核心建立程序id為1的程序也就是init程序,init程序使系統進入多使用者狀態。init程序讀檔案 etc ttys,對...
Linux 啟動 登入過程
一 啟動 1.開機bios自檢 2.mbr引導 3.grub引導選單 4.載入核心kernel 5.啟動init程序 6.讀取inittab檔案,執行rc.sysinit,rc等指令碼 7.啟動mingetty,進入系統登陸介面 二 登入 在登入linux時要執行檔案的過程如下 在剛登入linux時...
YII登入過程簡單總結
使用者的登入 過程是乙個比較費勁的事,還在yii提供了組建支援,熟練的使用該元件,在開發中可以大大的減少時間。在sitecontroller中有如下actionlogin if isguest if isset post loginform this render login array model...