1. 效果演示

首先启动Eureka注册中心、SSO服务、会员服务、门户服务、聚合支付服务
在这里插入图片描述
登录门户,浏览器输入http://guoranxinxian.com:8080,登录成功。
在这里插入图片描述
访问聚合支付门户,浏览器输入:http://guoranxinxian.pay.com:8079/,可以看到没走登录直接就进入了。
在这里插入图片描述
好的,可以看退出效果的演示了,在门户首页点击退出
在这里插入图片描述
点击后,自动跳转到了登录页了:
在这里插入图片描述

刷新聚合支付页面,可以看到也自动跳转到了登录页面了:
在这里插入图片描述

从上面演示效果可以看出:一端退出,所有端都退出。

2.退出功能实现

前端代码(核心代码):

<script type="text/javascript">
    function logout() {
        $.ajax({
            type: "delete",
            //url: "exit",
            url: "ssoExit",
            contentType: "application/json",
            dataType: "json",
            success: function (result) {
                window.location.href = "/";
            },
            error: function (result) {
            }
        });
    }
</script>

Controller层代码:

   @DeleteMapping("/ssoExit")
    @ResponseBody
    public BaseResponse<JSONObject> logout(HttpServletRequest request, HttpServletResponse response, Model model) {

        // logout
        BaseResponse<JSONObject> result = null;
        XxlSsoUser xxlUser = (XxlSsoUser) request.getAttribute(Conf.SSO_USER);
        SsoWebLoginHelper.logout(request, response);
        if (xxlUser != null && StringUtils.isNotEmpty(xxlUser.getUserid())) {
            result = memberLogoutServiceFeign.ssoLogout(xxlUser.getUserid());
        }
        return result;
    }

会员服务退出数据库操作:

/**
  * 用户登出接口
  *
  * @param token
  * @return
  */
 @DeleteMapping("/ssoLogout")
 @ApiOperation(value = "/ssoLogout")
 BaseResponse<JSONObject> ssoLogout(@RequestParam("token") String token);
@Override
 @Transactional
 public BaseResponse<JSONObject> ssoLogout(String token) {
     int updateTokenAvailability = userTokenMapper.updateTokenAvailability(token);
     if (updateTokenAvailability < 0) {
         return setResultError("系统错误");
     }
     JSONObject data = new JSONObject();
     data.put("result", true);
     return setResultSuccess(data);
 }

退出成功后,可以看到浏览器Cookie信息为空,Redis保存的内容也移除了,数据库更新为未登录。

Cookie
在这里插入图片描述

Redis
在这里插入图片描述

数据库
在这里插入图片描述

总结

本文主要讲解SSO单点退出的功能。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐