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

来源:3-6 Shiro加密

向之所欣

2018-05-19 20:30

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回答

  • qq_雨吻成都_0
    2018-12-19 23:58:25

    JAVA的对象参数是引用传递的而不是值传递。你无论什么时候设置对象参数的属性都一样。

  • 慕勒7148494
    2018-09-03 18:29:09

    去看HashedCredentialsMatcher的源码,里边有个doCredentialsMatch方法,你可以把断点打到这里,程序运行的时候一步步看,很清楚地就能看到shiro的匹配过程



  • 天奇农人
    2018-07-02 16:48:20

    java的引用传递

    慕婉清秋 回复艾尔帕西诺

    不要误人子弟

    2021-05-13 16:34:38

    共 2 条回复 >

  • MCQ
    2018-05-22 16:47:44
    下面后续的部分代码
    
    //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的规则去进行权限认证。

Shiro安全框架入门

从零入门Shiro安全框架

48036 学习 · 332 问题

查看课程

相似问题