无法 logout

来源:5-7 实现基于session的SSO(客户端应用的Session有效期)

磊磊要酷酷滴

2020-07-19

  • window.location.href = 'http://auth.imooc.com:9090/logout?redirect_uri=http://admin.imooc.com:8080' 请求会进入 DefaultLogoutPageGeneratingFilter,完了也会进入 OAuth2LogoutSuccessHandler,然后也会重定向到 http://admin.imooc.com:8080,然后访问 /me session 也没信息,然后访问 http://localhost:9090/oauth/authorize?client_id=admin&redirect_uri=http://localhost:8080/oauth/callback&response_type=code&state=abc 却不会有登录页,直接认证成功走回调 /oauth/callback 了,怎么会这样呢?
  • 好像是认证服务器中的 session 没被失效,这该怎么确认呢?
  • SPRING_SESSION 中的 session 信息一直删不掉,不知道为什么,debug 了,确实看到根据主键删除记录的 SQL,执行完了 rows=1,但就是表里的信息删不掉;
  • 我把老师的代码下载下来,第五章的分支,运行,还是登出不了啊,什么情况;
  • SPRING_SESSION 中,有一条用户登录的 session 信息,浏览器和 admin 交互的时候,带的也是这条 session 的 id(Base64),但是 admin 的 /logout 的回调 http://auth.imooc.com:9090/logout?redirect_uri=http://admin.imooc.com:8080 的时候,带的却不是这个 session_id
写回答

1回答

磊磊要酷酷滴

提问者

2020-07-20

终于找到原因了,跨域的问题,http://localhost:9090/oauth/authorize 和 http://auth.imooc.com:9090/logout?redirect_uri=http://localhost:8080    的域名不一样,之前 login 的域名(localhost)和 logout 的域名(auth.imooc.com)不是同一个,导致 logout 带的 SESSION 和 login 带的 SESSION 不一样,导致每次 logout 的时候,用户 login 的那条 session 总也删不掉,所以用户就登不出去;这两个域名统一了之后,login 和 logout 带的 SESSION 就一样了,数据库里的用户登录信息就可以删掉了,用户就可以 logout 成功了;

1
0

Spring Cloud微服务安全实战 可落地的安全方案

从API到复杂微服务场景,实战部署可落地的安全方案。

1029 学习 · 370 问题

查看课程