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(), "联合登录失败"); } }