Php Laravel 5.6:强制注销记住我登录
我的应用程序中有一个自定义登录控制器,可防止每个用户进行多个会话。如果用户从其他设备/浏览器登录,则会注销用户:Php Laravel 5.6:强制注销记住我登录,php,session,cookies,laravel-5.6,remember-me,Php,Session,Cookies,Laravel 5.6,Remember Me,我的应用程序中有一个自定义登录控制器,可防止每个用户进行多个会话。如果用户从其他设备/浏览器登录,则会注销用户: public function authenticated(Request $request, $user) { $previous_session = $user->session_id; if ($previous_session) { session()->getHandler()->destroy($previous_session);
public function authenticated(Request $request, $user) {
$previous_session = $user->session_id;
if ($previous_session) {
session()->getHandler()->destroy($previous_session);
}
auth()->user()->session_id = session()->getId();
auth()->user()->save();
return redirect(session()->pull('from', $this->redirectTo));
}
不管会话驱动程序是什么,此代码都会在users
表中查找session\u id
,并销毁与其关联的会话
但是,如果用户在启用“记住我”复选框的情况下登录,这将不起作用。用户使用以前的设备/浏览器保持登录状态。在第二次登录后,我怎么能告诉拉威尔忘记这一点?记得我吗?谢谢。您必须使
用户
数据库表中的记住令牌
无效或循环
当您调用Auth::logout()
时,这会自动发生
记住令牌
也可以手动失效,类似于Laravel处理它的方式:
protected function cycleRememberToken(AuthenticatableContract $user)
{
$user->setRememberToken($token = Str::random(60));
$this->provider->updateRememberToken($user, $token);
}
来源:laravel/framework/src/illumb/Auth/SessionGuard.php您必须使
用户
数据库表中的记忆令牌无效或循环
当您调用Auth::logout()
时,这会自动发生
记住令牌
也可以手动失效,类似于Laravel处理它的方式:
protected function cycleRememberToken(AuthenticatableContract $user)
{
$user->setRememberToken($token = Str::random(60));
$this->provider->updateRememberToken($user, $token);
}
来源:laravel/framework/src/illumb/Auth/SessionGuard.php