zoukankan      html  css  js  c++  java
  • Shiro自定义密码匹配认证

    项目集成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;
            // 这里可以判断某个条件若单点登录,则使用单点登录授权方法;也可以符合某条件直接return返回跳过
            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);
        }

    其实也就重写了AuthorizingRealm类的assertCredentialsMatch方法,判断符合某个条件参数时直接返回或者使用别的渠道认证;

    例子中是登录名如果不为thinkgem则使用特定的SSO调用



  • 相关阅读:
    linux安装mongodb磁盘空间不足
    ccf颁奖晚会
    Bug总结流程
    测试自学过程
    一个div,包含两个div,调整文字位置和div平均分布
    一个div,包含三个小的div,平均分布的样式
    测试成长之路
    k8s常用命令记录
    K8S 1.20.6安装dashboard(基于kubernetes-dashboard 2.0.0版本)
    F. Programming Contest
  • 原文地址:https://www.cnblogs.com/zhouyantong/p/7760820.html
Copyright © 2011-2022 走看看