![](/img/trans.png)
[英]laravel -how to logout session after checking remember me on a custom guard?
[英]Laravel 5.5 - remember me and custom session values issue
我安装了 laravel 5.5 并在登录时在 session 中设置了一些自定义值
在 Auth/LoginController 里面
public function authenticated(Request $request, $user)
{
Session::put('full_name', 'Thomas');
Session::put('age', '35');
Session::put('place', 'UK');
Session::save();
}
我将 session 超时设置为 1 分钟 in.env 文件
SESSION_LIFETIME=1
当用户登录时,如果他点击记住我复选框,则会生成一个新的 cookie,并将 remember_token 插入到 USERS 表中。
从 session 获取自定义 session 值后,我在视图文件中打印它们
$full_name = Session::get('full_name');
$age = Session::get('age');
$place= Session::get('place');
return view('home', compact('full_name', 'age', 'place'));
1 分钟不活动后,我的 session 过期,但由于用户检查了记住我,他将被记录但 Session 中的值消失了
这根本不符合逻辑,。 只要用户登录,我就需要 session 值。
如果用户通过remember_token
功能进行了身份验证,则不会调用Auth\LoginController@authenticated
方法。
最好的做法是使用全局中间件来检查用户是否经过身份验证以及是否设置了 session 数据。 如果未设置,请设置数据。
您的中间件 function 可能与此类似:
public function handle($request, Closure $next, $guard = null)
{
if(!Auth::check()) {
return $next($request);
}
if(Session::has('full_name') && Session::has('age') && Session::has('place')) {
Session::put('full_name', 'Thomas');
Session::put('age', '35');
Session::put('place', 'UK');
Session::save();
}
return $next($request);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.