0

私が使うとき

Auth::attempt();

ユーザーを認証する方法 ユーザーID、ロールなどのユーザーデータもセッションに入れました。そして、セッションの有効期間をゼロにしました。そのため、ユーザーが「remember me」チェックボックスをチェックすると、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');
}
});

そして、それは機能します。ただし、ログに記録されたユーザーがログに記録されているかどうかを確認する必要がある場所に行くたびに、DBに接続し、ユーザーデータを取得してセッションに入れる必要があるため、悪い解決策です。

しかし、ブラウザーを閉じた後でも自分のユーザー セッションの詳細を記憶するにはどうすればよいでしょうか?

4

1 に答える 1

2

Laravelでremember meを使用するには、追加のtrueブール値フラグを引数として追加する必要があります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 に答える