淘东电商项目(36) -SSO单点登录(退出功能)

引言

本文代码已提交至Github(版本号:37d163384d6bb3042f2ace22da1a82b9819c495b),有兴趣的同学可以下载来看看:https://github.com/ylw-github/taodong-shop

阅读本文时,建议先阅读前面博客:

前面把单点功能基本都完成了,还剩退出功能,其实很简单的,下面直接来讲解。

本文目录结构:
l____引言
l____ 1. 效果演示
l____ 2. 退出功能实现
l____总结

1. 效果演示

首先启动Eureka注册中心、SSO服务、会员服务、门户服务、聚合支付服务:
在这里插入图片描述
登录门户,浏览器输入http://taodong.com:8080,登录成功。
在这里插入图片描述
访问聚合支付门户,浏览器输入:http://taodong.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;
}

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

@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保存的内容也移除了,数据库更新为未登录。

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

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值