https://laravel-china.org/articles/10605/laravel-single-device-login
前几天在 laracasts 看了laravel5.6的新功能视频 logoutOtherDevices
用于使在其他设备上处于活动状态的用户会话无效并“注销”,而不会使其当前设备上的会话无效。,今天抽空把它应用到了系统里,在这里记录下吧。
在使用此功能前需要先把 app/Http/Kernel.php
web
中间件中的 \Illuminate\Session\Middleware\AuthenticateSession::class
注释取消掉。
在 LoginController
控制器中继承 Illuminate\Foundation\Auth\AuthenticatesUsers
类中的 authenticated
方法。
protected function authenticated(Request $request, $user) { $this->guard()->logoutOtherDevices($request->password); return response()->json(['message' => '登录成功']); }
logoutOtherDevices
接受两个参数,第一个参数是来自表单提交的数据,然后经过加密保存到第二个参数指定的字段里,在经过中间件储存 session
public function logoutOtherDevices($password, $attribute = 'password') { if (! $this->user()) { return; } return tap($this->user()->forceFill([ $attribute => Hash::make($password), ]))->save(); } }
这样在用户登录成功后,即会注销其他设备上的会话而实现单设备登陆。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/112926.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...