文档章节

多个realm时,抛出自定义的异常

x
 xxm1995
发布于 2018/11/27 16:22
字数 244
阅读 36
收藏 0

1.继承一个ModularRealmAuthenticator类

创建一个类,继承ModularRealmAuthenticator ,然后重写 doMultiRealmAuthentication方法

/**
  * ,抛出realm中第一个遇到的异常
  * @param realms 领域认证器
  * @param token 认证凭证
  * @return aggregate
  */
@Override
protected AuthenticationInfo doMultiRealmAuthentication(Collection<Realm> realms, AuthenticationToken token) {
    AuthenticationStrategy strategy = getAuthenticationStrategy();
    AuthenticationInfo aggregate = strategy.beforeAllAttempts(realms, token);
    if (log.isTraceEnabled()) {
        log.trace("Iterating through {} realms for PAM authentication", realms.size());
    }
    for (Realm realm : realms) {
        aggregate = strategy.beforeAttempt(realm, token, aggregate);
        if (realm.supports(token)) {
            log.trace("Attempting to authenticate token [{}] using realm [{}]", token, realm);
            AuthenticationInfo info = null;
            //有异常从此处抛出
            info = realm.getAuthenticationInfo(token);
            aggregate = strategy.afterAttempt(realm, token, info, aggregate, null);
        } else {
            log.debug("Realm [{}] does not support token {}.  Skipping realm.", realm, token);
        }
    }
    aggregate = strategy.afterAllAttempts(token, aggregate);
    return aggregate;
}

2.在shiroConfig中把自定义的 ModularRealmAuthenticator 加入到shiro中

     /**
     * shiro 安全管理器设置
     * @return SecurityManager
     */
    @Bean
    public SecurityManager securityManager() {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setSessionManager(sessionManager());
        //自定义的模块化领域认证(ModularRealmAuthenticator)
        ModularRealmAuthenticator authenticator = new WxModularRealmAuthenticator();
        securityManager.setAuthenticator( authenticator );
        return securityManager;
    }

© 著作权归作者所有

x
粉丝 0
博文 24
码字总数 12971
作品 0
菏泽
私信 提问
关于开源权限框架Shiro的笔记(一)

Shiro的官方文档的URL是:http://shiro.apache.org/reference.html。引入如下依赖: <!-- junit --><dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</v......

DENGJM
2015/09/28
47
0
shiro之身份认证

一、用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能验证用户身份。 principals:身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体...

沉默的懒猫
2016/07/04
130
0
Apache Shiro 使用手册(二)Shiro 认证

一、Shiro认证过程 1、收集实体/凭据信息 //Example using most common scenario of username/password pair:UsernamePasswordToken token = new UsernamePasswordToken(username, password)......

heroShane
2014/02/10
0
0
Apache Shiro 使用手册(二)

认证就是验证用户身份的过程。在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法。最常见的“实体/凭证”组合便是“用户名/密码”组合。 一、Shiro...

一枚Sir
2014/09/22
0
1
shiro使用之二

1.身份认证概念 在 shiro 中,用户需要提供 principals (身份)和 credentials(证明)给 shiro,从而应用能 验证用户身份; principals:身份,即主体的标识属性,可以是任何东西,如用户名...

乾坤刀
2017/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

最开始学习素描的步骤是什么?

最开始学习素描的步骤是什么?很多学画画的朋友们都会问直接跳过素描不学素描行不行,小编非常的肯定告诉你不行,素描是所以绘画类的基础,台阶是一层一层筑起的,目前的现实是未来理想的基础...

设绘嗨
32分钟前
1
0
Caused by: java.lang.ClassCastException: scala.collection.mutable.WrappedArray

code val linkPairSum = F.udf( (list:List[Map[Long,Int]]) => { var map = Map[Long,Int]() for(m <- list){ if(m != null){ ......

张欢19933
32分钟前
1
0
git常见问题

一、clone代码 clone 1.登录账号密码不对 fatal: Authentication failed for 2.权限不足 Permission denied (publickey) 或者emote: User permission denied fatal: unable to access u......

hexiaoming123
42分钟前
1
0
Mybatis操作mysql 8的Json字段类型

Json字段是从mysql 5.7起加进来的全新的字段类型,现在我们看看在什么情况下使用该字段类型,以及用mybatis如何操作该字段类型 一般来说,在不知道字段的具体数量的时候,使用该字段是非常合...

算法之名
50分钟前
38
0
Windows7至Windows10的升级建议

目前,诸多企业或已开始在进行Windows7至Windows10的升级,或正在规划Windows7升级至Windows10。 主要原因有两个: Windows7的生命周期即将结束,这意味着再也无法获取Windows7的安全更新,以...

嘉为科技
53分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部