zoukankan      html  css  js  c++  java
  • Javashop电商系统-会员登录方式

    Javashop电商系统国内基于Java开发的企业级电商平台。

    关于会员的安全认证,采用token机制鉴权,结合SpringSecurity来实现安全配置。

    下面结合代码简单介绍一下会员的多种登录方式:

     

    1.账号密码登录

    用户选择账号登录,输入账号密码,实现方式为验证账号密码是否正确。

    2.手机号快捷登录

    用户选择快捷登录,通过输入的手机号和验证码进行验证登录。

    3.信任登录

    第三方扫码登录,包括QQ,微信,微博,支付宝等多种登录方式

    信任登录需要配置登录参数,在配置文件中配置您的买家端域名以及回调地址

     

    欢迎访问Javashop登录界面

    以下为为信任登录统一回调地址源码展示:

        @ApiOperation(value = "信任登录统一回调地址")
        @GetMapping("/connect/{port}/{type}/callback")
        @ApiImplicitParams({
                @ApiImplicitParam(name = "type", value = "登录类型", required = true, dataType = "String", allowableValues = "QQ,WEIBO,WECHAT,ALIPAY", paramType = "path"),
                @ApiImplicitParam(name = "port", value = "登录客户端", required = true, dataType = "String", allowableValues = "PC,WAP", paramType = "path"),
                @ApiImplicitParam(name = "uid", value = "会员id", required = true, dataType = "Integer", paramType = "query")
        })
        public void callBack(@PathVariable("type") String type, @PathVariable("port") String port, @ApiIgnore Long uid) {
            try {
                uid = getUidForCookies(uid);
                if (uid != null && uid != 0) {
                    bindCallBackMethod(type, port, uid);
                } else {
                    String uuid = UUID.randomUUID().toString();
    
                    debugger.log("生成uuid:");
                    debugger.log(uuid);
    
                    MemberVO memberVO = connectManager.callBack(type, port, null, uuid);
    
                    HttpServletResponse httpResponse = ThreadContextHolder.getHttpResponse();
                    //主域名
                    String main = domainHelper.getTopDomain();
                    String buyer = domainHelper.getBuyerDomain();
                    //如果是wap站点,需要跳转到wap对应的绑定页面或者是首页
                    if (StringUtil.isWap()) {
                        buyer = domainHelper.getMobileDomain();
                    }
                    String redirectUri = buyer + binder + "?uuid=" + uuid;
                    //如果会员存在则直接跳转到首页
                    if (memberVO != null) {
                        Cookie accessTokenCookie new Cookie("access_token", memberVO.getAccessToken());
                        Cookie refreshTokenCookie new Cookie("refresh_token", memberVO.getRefreshToken());
                        Cookie uidCookie new Cookie("uid", StringUtil.toString(memberVO.getUid()));
                        accessTokenCookie.setDomain(main);
                        accessTokenCookie.setPath("/");
                        accessTokenCookie.setMaxAge(javashopConfig.getAccessTokenTimeout());
    
                        refreshTokenCookie.setDomain(main);
                        refreshTokenCookie.setPath("/");
                        refreshTokenCookie.setMaxAge(javashopConfig.getRefreshTokenTimeout());
    
                        uidCookie.setDomain(main);
                        uidCookie.setPath("/");
                        uidCookie.setMaxAge(javashopConfig.getRefreshTokenTimeout());
    
                        httpResponse.addCookie(uidCookie);
                        httpResponse.addCookie(accessTokenCookie);
                        httpResponse.addCookie(refreshTokenCookie);
                        redirectUri = buyer + index + "?uuid=" + uuid;
                    }
                    //如果会员存在则登录此会员并将uuid及token信息存入cookie
                    Cookie cookie = new Cookie("uuid_connect", uuid);
                    cookie.setDomain(main);
                    cookie.setPath("/");
                    cookie.setMaxAge(javashopConfig.getRefreshTokenTimeout());
                    httpResponse.addCookie(cookie);
                    //无会员则跳转至绑定页
                    httpResponse.sendRedirect(redirectUri);
                    return;
                }
    
            } catch (IOException e) {
                this.logger.error(e.getMessage(), e);
                throw new ServiceException(MemberErrorCode.E131.name(), "联合登录失败");
            }
        }
  • 相关阅读:
    jQuery Validate 插件
    本地存储 web storage
    ajax简介及JS写原生ajax
    swiper插件简介及用法
    JavaScript中的string对象及方法
    javascript数组中的方法
    面向对象
    logging模块具体补充
    模块补充
    内置函数总结
  • 原文地址:https://www.cnblogs.com/javashop-docs/p/14103097.html
Copyright © 2011-2022 走看看