gpt4 book ai didi

php - Laravel 5.2 - 如何从他的所有设备注销用户

转载 作者:IT王子 更新时间:2023-10-29 05:56:49 26 4
gpt4 key购买 nike

当用户从特定设备注销时,我想从他到目前为止登录的所有设备注销。我如何在 Laravel 中做到这一点。

我已经使用 Redis 通过安装“predis/predis”将 userId 保存在 Session 中:“~1.0”

这是我的登录和注销 Controller :

  public function postSignIn(Request $request)
{

if (Auth::attempt(['email' => $request['email'], 'password' =>$request['password'] ]) ) {

$redis = \Redis::connection();
$userId=Session::getId();
$redis->sadd('users:sessions:'.$userId,Session::getId());
return redirect()->route('main');

}
return redirect()->back();
}



public function getLogout()
{
$redis = Redis::connection();
$userId=Session::getId();
$userSessions = $redis->smembers('user:sessions:' . $userId);
$currentSession = Session::getId();
foreach ($userSessions as $sessionId) {
if ($currentSession == $sessionId) {
continue;

}
$redis->srem('user:sessions:' . $userId, $sessionId);
$redis->del('laravel:' . $sessionId);

}
Auth::logout();
return redirect()->route('main');
}

它已成功登录并注销,但不会终止其他设备中的所有 session 。

我该如何解决这个问题?

最佳答案

所以问题出在 redis 键名中的拼写错误,用于写入数据$redis->sadd('users:sessions:'.$userId,Session::getId());其中键的前缀 'users:sessions:' 和获取使用的数据$redis->srem('user:sessions:' . $userId, $sessionId); 其中键的前缀 'user:sessions:'这就是为什么代码不起作用并且 dd() 返回空数组的原因。

所以正确的代码是这样的

public function postSignIn(Request $request)
{

if (Auth::attempt(['email' => $request['email'], 'password' =>$request['password'] ]) ) {
$redis = \Redis::connection();
$userId=Session::getId();
$redis->sadd('user:sessions:'.$userId,Session::getId());
return redirect()->route('main');
}
return redirect()->back();
}



public function getLogout()
{
$redis = Redis::connection();
$userId=Session::getId();
$userSessions = $redis->smembers('user:sessions:' . $userId);
$currentSession = Session::getId();

foreach ($userSessions as $sessionId) {
if ($currentSession == $sessionId) {
continue;
}
$redis->srem('user:sessions:' . $userId, $sessionId);
$redis->del('laravel:' . $sessionId);
}
Auth::logout();
return redirect()->route('main');
}

关于php - Laravel 5.2 - 如何从他的所有设备注销用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37405740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com