从网上查询资料得知,在laravel中使用__construct方法的时候,session还没开启,此时就需要用到中间件来解决。
1 2 3 4 | $this ->middleware( function ( $request , $next ) { var_dump(\Session::get( 'userid' )); exit ; }); |
我这里用到的__construct函数,是用来判断同一个账号是否在另一个客户端登录,比如A客户端正在登录,此时B客户端也要登录,B客户端登录成功后,A客户端就会退出
通过验证当前的登录IP是否一致来判断。
这是一个公共类,该类继承了Controller类,所以只要用到这个公共类,其他类只需把继承的Controller类换成该公共类就可以了
1 2 3 4 5 6 7 8 9 10 11 12 13 | public function __construct(Request $request ) { // 判断是否已在客户端登录 $this ->middleware( function ( $request , $next ) { $ip = md5( $_SERVER [ 'REMOTE_ADDR' ]); //当前的IP,md5加密 $res = DB::table( 'users' )->where([ 'uid' =>\Session::get( 'userid' )])->first(); if ( $ip != $res ->IP) { return redirect( '/adminlogin' );<br> exit ; } return $next ( $request ); }); } |