2016-10-26 18 views
1

私はlaravelフレームワークを使用して 'remember me'ログインを実装しようとしています。ユーザーが「remember me」ボックスをチェックすると、laravelはセッションデータを1ヶ月間保持します。ユーザーがチェックを外すと、ユーザーがブラウザを閉じるまでセッションを維持したい。2つの異なる生涯セッションを持つLaravel

「私を覚えている」がチェックされているときにセッションを制御する方法を知っています。私は以下のように設定/ session.phpでセッションを構成し:

'lifetime' => 43200, 
'expire_on_close' => false, 

そして私は、グローバルセッションヘルパー

session(['accessToken' => SOME_ACCESS_TOKEN]); 
Session::flush(); 

などとのセッションを使用しています。

しかし、私が「私を覚えている」とチェックしていない状態でログインするときの仕組みはわかりません。私は設定を制御する方法を見つけようとしましたが、ユーザの入力に基づいて、オンザフライで、失敗しました。 1つのラーヴェル・フレームワーク内で2つの異なるセッション・ライフタイム構成をどのように保つことができるか教えてください。または、私が間違った方法で「私を覚えている」ことを試みているなら、私を案内してください。

基本的には、上記のように、私は「私を覚えている」という月にセッションを続け、「私を覚えていない」ブラウザを閉じるまでセッションを維持したいと思います。

ありがとうございました。

答えて

0

私がの機能を覚えているためには、セッション構成で作業しないでください。代わりに、既にLaravelに組み込まれている機能を使用する必要があります。

Auth :: attempt()でユーザーを認証すると、第2引数としてブール値を渡すことができます。ユーザがをチェックした場合は、それをtrueに設定してください。チェックボックスを覚えています。それ以外の場合はfalseに設定します。

このようにチェックボックスをオンにすると、ユーザーはアプリケーションから手動でログアウトするまで記憶されます。それ以外の場合は、ブラウザを閉じるかセッションの有効期限が切れるまで記憶されます。

あなたはここにいくつかのより多くのinformaton見つけることができます:それは私が望んでいたまさに大丈夫https://laravel.com/docs/5.3/authentication#remembering-users

+0

を。しかし、Authを「ユーザー」とは別のテーブルにどのように向けるべきですか?私の場合、USERというテーブル(すべて大文字)があります。私はconfig/auth.phpを調べましたが、それは私が探しているものではないようです...また、Auth :: viaRemember()を使用することはできますか?ユーザーがブラウザを閉じない?ありがとう!! –

+0

私はちょっと掘り下げて、config/auth.phpが実際に私が必要としていたものを見つけました。私は 'プロバイダー'を 'データベース'と 'ユーザー'テーブルを指すように変更しました。しかし、私は 'remember_token'列をVARCHAR(100)型で作成しましたが、 'ErrorException inGenericUser.php 66行目は未定義のインデックス:remember_token'というエラーが表示されます。私はこれをどのように修正できるか知っていますか? –

+0

viaRememberは、ユーザーがremember-me Cookieで認証されたかどうかを示します。試しに手動でユーザーを認証すると、viaRememberはあなたを偽にします。 –

関連する問題