繁体   English   中英

Laravel 5.5 - 记住我和自定义 session 值问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM