需求描述
当前用户只能在一个地方登录,即同一账号不能再2个以上窗口登录,后登录者踢出前登录者。
设计思路
在用户数据表中新增1个字段,记录当前登录用的session_id,当用户登录的时候把session_id存储到数据库中,然后在中间件认证里加判断,判断当前用户sesson_id是否和数据库中的session_id相等,如果相等继续向下执行,反之注销登录。
具体实现
1.首先在用户表中新增字段last_session,类型CHAR 40长度
2.在AuthController 控制器中实现父类方法authenticated方法,目的保存当前用户的session_id到数据库中。
protected function authenticated($request,$user){
$user->last_session = Session::getId();
$user->save();
return redirect()->intended($this->redirectPath());
}
3.在Authenticate中间中加入判断代码
if(Session::getId() != Auth::guard($guard)->user()->last_session){
return redirect('/admin/logout');}
也可以在判断代码块中加入其它,如提示当前账号在其它地方登录,然后注销当前登录等。
以上这篇laravel 5.3 单用户登录简单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:- Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
- Laravel5.2使用Captcha生成验证码实现登录(session巨坑)
- laravel5.2实现区分前后台用户登录的方法
- laravel5实现微信第三方登录功能
- 基于Laravel5.4实现多字段登录功能方法示例
- Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
- 解决laravel5中auth用户登录其他页面获取不到登录信息的问题
- Laravel5.4框架使用socialite实现github登录的方法
- Laravel 5.5 实现禁用用户注册示例
- Laravel5.1 框架登录和注册实现方法详解