shiro登入過程

2021-08-04 10:53:25 字數 2093 閱讀 8174

接觸和使用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...