(私はLaravelの初心者です)
_Laravel 5.2
_を使用しています。認証を有効にしました。 _php artisan make:auth
_などを実行します。
だから私のログインは機能しています。
次に、誰かがログインしたら何かをする必要があります。簡単な例としては、
ログインする:
$request->session()->put('UserAgent', $ClientUserAgent);
ログアウト:
$request->session()->forget('UserAgent');
hooks
または_Event Listeners
_、_Event Handlers
_、またはそのようなものがあるかどうかはわかりません。
どうすればいいですか?
Alief's Answer 以下は期待どおりに機能します。しかし、私がググったように、Event Handlersを使用することはおそらくより好ましい方法です。 (カスタムフックのように機能します)。
したがって、以下のAliefの回答をそれほど尊重せずに、-> このイベントハンドラーアプローチ を選択させてください。
よろしくお願いします!
Laravelの新しいバージョンの場合
非常に単純なことをしているだけなら、イベントハンドラを作成するのはやりすぎに思えます。 Laravelには、この目的でAuthenticatesUsers
クラスに空のメソッドが含まれています。
app\Http\Controllers\LoginController
内に次のメソッドを配置するだけです(オーバーライドします)。
protected function authenticated(Request $request, $user)
{
// stuff to do after user logs in
}
ポストログインの場合は、_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('/');
}
_
発生したAuthイベントのイベントリスナーを設定してみることができます。
Illuminate\Auth\Events\Login
をリッスンしてリスンを設定し、ポストログインとIlluminate\Auth\Events\Logout
でポストログアウトを処理できます。
テストしている場合、authenticated(Request $request, User $user)
メソッドこのメソッド内でアラートを使用してテストしないでくださいの場合、結果は表示されません。これをテストするには、挿入クエリなどを配置することをお勧めします方法。
なぜ簡単なチェックではないのですか
if(Auth::check()){
//your code
}
必ずuse Auth;
を含めてください