• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

小程序H5的自动登录(后台Shiro)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

场景:公司开发小程序,除了正常页面访问小程序后台之外,还有一些H5页面访问另外一个系统的后台,而且不用客户再次登录

思路:H5页面跳转时,传递客户唯一标示(两个系统需要一致),以及验证用的token(可加密生成,或者固定字符串-不太安全)

实现:小程序端试用webview,不再多说,以下是后台shiro的实现机制(核心在CredentialsMatcher的重写)

1. 在realm实现中设定自定义的Matcher

 @PostConstruct
    public void initCredentialsMatcher() {
        AutoLoginMatcher matcher = new AutoLoginMatcher(); // 定义在2中
        matcher.setHashAlgorithmName(SystemService.HASH_ALGORITHM);
        matcher.setHashIterations(ShaUtils.HASH_INTERATIONS);
        setCredentialsMatcher(matcher);
    }

2. Matcher的重写

/**
 * 登录密码比较器(重写主要用于自动登录的情况)
 * @author liuwei
 * @date 2021/1/30
 */
public class AutoLoginMatcher extends HashedCredentialsMatcher {


    @Override
    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
        UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;
        String autoLoginToken = usernamePasswordToken.getAutoLoginToken();
        // 如果是自动登录
        if(StringUtil.isNotEmpty(autoLoginToken)){
            // 验证token有效性(有效则直接返回true,不再需要比较密码
            try {
                if(InterfaceUtil.auth(InterfaceConstants.interfaceAccessSwitchOn, InterfaceConstants.interfaceGoRoundValidationOn, "study_login",
                        InterfaceConstants.appKey,usernamePasswordToken.getRequestId(),autoLoginToken)){
                    return true;
                }
            } catch (Exception e){
                throw new RuntimeException("接口请求认证失败,请确认签名是否正确!");
            }

        }

        //不是免密登录,调用父类的方法
        return super.doCredentialsMatch(usernamePasswordToken, info);
    }
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序-如何自定义导航栏(navigationStyle)?发布时间:2022-07-18
下一篇:
如何搭建在线考试小程序发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap