學(xué)習(xí)的時(shí)候在自定義的Realm的doGetAuthenticationInfo方法中顯示根據(jù)token查詢(xún)user信息,然后對(duì)身份信息進(jìn)行了username,password驗(yàn)證,但是看公司的項(xiàng)目中并沒(méi)有進(jìn)行特別的驗(yàn)證,只是判斷了一下user是否為空,然后直接封裝了SimpleAuthenticationInfo。覺(jué)得很奇怪。
查看shiro源碼才知道:
首先在進(jìn)入自定義Realm之前,會(huì)經(jīng)過(guò)AuthenticatingRealm這個(gè)類(lèi)的getAuthenticationInfo方法

getAuthenticationInfo
在assertCredentialsMatch中如果不匹配會(huì)拋出異常,而經(jīng)過(guò)上級(jí)各種的捕獲,最后會(huì)返回false。
所以在自定義的Realm中的doGetAuthenticationInfo方法中我們只需要根據(jù)token進(jìn)行查詢(xún)?nèi)缓髾z查下是否為空以及其他自定義的條件,最后封裝成SimpleAuthenticationInfo返回就行了。