亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

securityManager設置realm之后,realm再設置matcher,怎么生效的?

CustomRealm?customRealm?=?new?CustomRealm();
DefaultSecurityManager?defaultSecurityManager?=?new?DefaultSecurityManager();
//?設置realm
defaultSecurityManager.setRealm(customRealm);

HashedCredentialsMatcher?matcher?=?new?HashedCredentialsMatcher();
matcher.setHashAlgorithmName("md5");
matcher.setHashIterations(1);
//?設置matcher
customRealm.setCredentialsMatcher(matcher);

SecurityUtils.setSecurityManager(defaultSecurityManager);


正在回答

4 回答

JAVA的對象參數是引用傳遞的而不是值傳遞。你無論什么時候設置對象參數的屬性都一樣。

0 回復 有任何疑惑可以回復我~

去看HashedCredentialsMatcher的源碼,里邊有個doCredentialsMatch方法,你可以把斷點打到這里,程序運行的時候一步步看,很清楚地就能看到shiro的匹配過程



0 回復 有任何疑惑可以回復我~

java的引用傳遞

2 回復 有任何疑惑可以回復我~
#1

艾爾帕西諾

java沒有引用傳遞 只有值傳遞
2019-01-24 回復 有任何疑惑可以回復我~
#2

慕婉清秋 回復 艾爾帕西諾

不要誤人子弟
2021-05-13 回復 有任何疑惑可以回復我~
下面后續的部分代碼

//2、主體提交認證請求
SecurityUtils.setSecurityManager(defaultSerityManager);
Subject?subject?=?SecurityUtils.getSubject();
UsernamePasswordToken?token?=?new?UsernamePasswordToken("Mark",?"123456");
subject.login(token);

matcher設置進到了customRealm,customRealm設置進了defaultSecurityManager,

defaultSecurityManager設置進到了SecurityUtils,

通過SecurityUtils獲取一個subject主體,登錄的token會依據這條鏈路最終使用到設置的匹配器matcher的規則去進行權限認證。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

securityManager設置realm之后,realm再設置matcher,怎么生效的?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號