请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

无法 logout

  • 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

正在回答 回答被采纳积分+3

1回答

提问者 磊磊要酷酷滴 2020-07-20 10:51:40

终于找到原因了,跨域的问题,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 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信