《果然新鲜》电商项目(40)- SSO单点登录(退出功能)

Posted IT刘老师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《果然新鲜》电商项目(40)- SSO单点登录(退出功能)相关的知识,希望对你有一定的参考价值。

文章目录

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单点退出的功能。

以上是关于《果然新鲜》电商项目(40)- SSO单点登录(退出功能)的主要内容,如果未能解决你的问题,请参考以下文章

《果然新鲜》电商项目(37)-SSO单点登录(改造SSO认证服务登录界面)

《果然新鲜》电商项目(35)-SSO单点登录(XXL-SSO案例)

《果然新鲜》电商项目(39)- SSO单点登录(登录功能完善)

《果然新鲜》电商项目(41)- SSO单点登录(高可用实现思路)

《果然新鲜》电商项目(25)- 会员唯一登录

《果然新鲜》电商项目(26)- Redis如何与数据库状态保持一致?