想做一个同步登出功能

具体案例是这样的:假设现在有两个网站:site1 和 site2,现在如果我在 site1 中让用户退出,那么 site2 中登录的用户也要同步退出。

我的基本设想就是在 site1 中点击退出时,使用 guzzlehttp 发送一个请求,如:
`$client = GuzzleHttp\Client();
$client->get('http://site2/logout');`
触发 site2 中的退出方法,
`public function logout()
{

//

}`
销毁 site2 中的 session。那么该怎么销毁 site2 登录用户的 session,实现登出?或者说这种方法完全不行,有实现的其他的方式吗?

JellyBool

这种前提是:你们两个站点使用的是同一个 session 和一个 users 表?

zmecust 回复 JellyBool

不是共用,各自都有 session 和 用户表

JellyBool 回复 zmecust

那你怎么确定是同一个用户呢?

zmecust 回复 JellyBool

我已经做了同步登入,就是 site2 中用户登入的时候,我会让它跳转到 site1 中登录,判断 site1 中用户是否登入,如果登录,则返回 site1 中的用户信息,比如 email,然后通过该 email 字段,让 site2 中包含该 email 的用户登录。所以刚说错了,其实两张用户表是通过 email 这一字段来确定是否为同一用户的。

JellyBool 回复 zmecust

那这样的的话,你能确定这两个站点的 sessionId 是一致的么?

$user = Auth::user();
$sessionId = session()->getId(); // 这个出来的是什么? 直接 return 看看
zmecust 回复 JellyBool

你好,打印出来两个sessionId 是不一样的

JellyBool 回复 zmecust

不一样的话,这个就很难判断了,我想想。。。

mostwin

单点登录?

这种方式,登录和登出时通知其他站点需前端js触发,不应该是服务器。