web-dev-qa-db-ja.com

Laravel 5.2:ユーザーがログインした後に何かしますか?

(私はLaravelの初心者です)

_Laravel 5.2_を使用しています。認証を有効にしました。 _php artisan make:auth_などを実行します。

だから私のログインは機能しています。

次に、誰かがログインしたら何かをする必要があります。簡単な例としては、

ログインする:

  • ユーザーがログインしたら、Sessionに値を書き込みます。
  • 例:$request->session()->put('UserAgent', $ClientUserAgent);

ログアウト:

  • 同じように、ユーザーがログアウトしたら、カスタムセッション値を削除します。
  • 例:$request->session()->forget('UserAgent');

hooksまたは_Event Listeners_、_Event Handlers_、またはそのようなものがあるかどうかはわかりません。

どうすればいいですか?

24
夏期劇場

Alief's Answer 以下は期待どおりに機能します。しかし、私がググったように、Event Handlersを使用することはおそらくより好ましい方法です。 (カスタムフックのように機能します)。

したがって、以下のAliefの回答をそれほど尊重せずに、-> このイベントハンドラーアプローチ を選択させてください。

よろしくお願いします!

1
夏期劇場

Laravelの新しいバージョンの場合

非常に単純なことをしているだけなら、イベントハンドラを作成するのはやりすぎに思えます。 Laravelには、この目的でAuthenticatesUsersクラスに空のメソッドが含まれています。

app\Http\Controllers\LoginController内に次のメソッドを配置するだけです(オーバーライドします)。

protected function authenticated(Request $request, $user)
{
    // stuff to do after user logs in
}
21
kjdion84

ポストログインの場合は、_App/Http/Controllers/Auth/AuthController.php_を変更することで実行できます。

そのクラスにauthenticated()を追加して、デフォルトのクラスをオーバーライドします。

_use Illuminate\Http\Request;

protected function authenticated(Request $request, User $user) {
   // put your thing in here

   return redirect()->intended($this->redirectPath());
}
_

ログアウトの場合、この関数を同じクラスに追加します。

_use Auth;

protected function getLogout()
{
    Auth::logout();

    // do something here

    return redirect('/');
}
_
12
Alief

発生したAuthイベントのイベントリスナーを設定してみることができます。

Illuminate\Auth\Events\Loginをリッスンしてリスンを設定し、ポストログインとIlluminate\Auth\Events\Logoutでポストログアウトを処理できます。

Laravelドキュメント-認証-イベント

4
lagbox

テストしている場合、authenticated(Request $request, User $user)メソッドこのメソッド内でアラートを使用してテストしないでくださいの場合、結果は表示されません。これをテストするには、挿入クエリなどを配置することをお勧めします方法。

1

なぜ簡単なチェックではないのですか

if(Auth::check()){
    //your code
}

必ずuse Auth;を含めてください

0
Iftikhar uddin