日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shiro认证时出现报错Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken -

發(fā)布時間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shiro认证时出现报错Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

shiro認證時出現(xiàn)報錯:

org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - admin, rememberMe=false] did not match the expected credentials.

當時出現(xiàn)這個問題是在生產(chǎn)的uat環(huán)境上出現(xiàn)的,說實話,挺幸運的,幸好是在uat環(huán)境上測出來的(公司的測試環(huán)境沒有發(fā)現(xiàn)),要是上生產(chǎn)出現(xiàn)這個問題,估計得挨批評了。。。

好了,廢話不多說,我來介紹一下這個報錯出現(xiàn)的場景。當時給客戶上的是兩套是系統(tǒng)(A和B),系統(tǒng)里面的用戶是相互獨立的,但是A系統(tǒng)的用戶是需要同步到B系統(tǒng)里去的,當時出現(xiàn)的問題就是A系統(tǒng)同步用戶到B系統(tǒng),然后A系統(tǒng)在使用的過程中,修改了用戶的密碼(密碼也會同步過去),B系統(tǒng)里的這個用戶就登錄不了。當時給我的第一反應就是緩存問題,但這只是自己的懷疑而已,并沒有證據(jù)。

好吧,那我們自己找證據(jù),根據(jù)現(xiàn)場給過來的log日志,我們可以直接定位到shiro源碼的報錯位置。
org.apache.shiro.realm.AuthenticatingRealm.assertCredentialsMatch(AuthenticatingRealm.java:603)

通過斷點,這里我們可以看見,應該是token和info里面的信息不配造成的。

好,那么我點doCredentialsMatch方法,好家伙!!!果然有問題,通過AuthenticationToken和AuthenticationInfo通過單詞的意思,我們可以猜出來,AuthenticationToken是登錄傳遞過來的,AuthenticationInfo是shiro里的Realm認證和授權的時候傳遞過來的,查看兩處相關代碼,有重大發(fā)現(xiàn)!Realm認證的時候,是從緩存中獲取的用戶信息!

那么分析到這里,問題就比較清晰了,A系統(tǒng)修改密碼,同步密碼信息的時候,是直接用SQL修改,沒有刷新到B系統(tǒng)里的緩存!
解決問題的方法有兩種,一種是去掉B系統(tǒng)這里的緩存。第二種是A系統(tǒng)同步密碼信息的時候,通知B系統(tǒng)刷新緩存!

總結

以上是生活随笔為你收集整理的shiro认证时出现报错Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken -的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。