0

当我使用

Auth::attempt();

验证用户的方法 我还将一些用户数据放入会话中,例如用户 ID、角色等。我将会话生命周期设置为零。因此,当用户选中“记住我”复选框时,即使在他关闭浏览器后,laravel 也会记住他。但是,当他关闭浏览器时,我丢失了会话数据。尽管用户已登录,但我不再有一些与他相关的会话数据。

我试过这个解决方案:

Route::get('/', function() {
if (Auth::check()) {
    $user = Auth::user();

    Session::put('user_id',        $user->id);
    Session::put('company_id',     $user->company_id);
    Session::put('is_super_admin', Company::isSuperAdmin($user->company_id));
    Session::put('is_admin',       $user->is_admin);

    if (Session::get('is_super_admin')) {
        return View::make('admin');
    } else {
        return View::make('client');
    }
} else {
    return View::make('login');
}
});

它有效。但是,这意味着每次登录的用户去某个我应该检查他是否登录的地方时,我都必须连接到数据库,获取用户数据并将其放入会话中,所以这是一个糟糕的解决方案。

但是,即使在浏览器关闭后,我如何才能记住我自己的用户会话详细信息?

4

1 回答 1

2

要在 Laravel 中使用记住我,您应该在Auth::attempt(). 请参阅文档: http: //laravel.com/docs/security#authenticating-users

if (Auth::attempt(array('email' => $email, 'password' => $password), true))
{
    // The user is being remembered...
}

编辑:不要自己将数据放入会话中。要访问该数据,请使用Auth::user()->field.

于 2013-06-10T15:00:45.250 回答