码迷,mamicode.com
首页 > 其他好文 > 详细

Shiro自定义密码匹配认证

时间:2017-10-31 14:13:06      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:sse   row   回调   config   map   real   throw   username   单点登录   

项目集成shiro的时候,有写某个自定义类然后继承自AuthorizingRealm

并且重写实现了他的2个方法:

1、其中一个:认证回调 验证账户密码的

doGetAuthenticationInfo

2、另外一个:授权查询 验证权限的

doGetAuthorizationInfo

ok,上面没什么用,只是讲述一下,正真用到的是下面的代码

  /**
     * 认证密码匹配调用方法
     * @param authcToken
     * @param info
     * @throws AuthenticationException
     */
    @Override
    protected void assertCredentialsMatch(AuthenticationToken authcToken,
                                          AuthenticationInfo info) throws AuthenticationException {
        UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
        // 若单点登录,则使用单点登录授权方法。
        if (!token.getUsername().equals("thinkgem")) {
            Map<String,Object> map = Maps.newConcurrentMap();
            map.put("name",token.getUsername());    
            map.put("pwd",String.valueOf(token.getPassword()));    
            // 调用sso连接认证
            String result = HttpClientUtils.doGet(Global.getConfig("ssoLoginUrl"),  map);
            if (result.equals("true")){
                return;
            }
        }
        // 否则还是继续匹配(兜底方案)
        super.assertCredentialsMatch(token, info);
    }

使用上述代码就能通过自定义密码匹配认证

 




Shiro自定义密码匹配认证

标签:sse   row   回调   config   map   real   throw   username   单点登录   

原文地址:http://www.cnblogs.com/zhouyantong/p/7760820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!