Log::info - 在 laravel.log 中记录用户注销

我想在 larave.log 文件中添加我的应用程序中的所有活动。我能够在其中添加用户登录名,但不能添加注销。


我使用 Laravel 5.8 和 mysql 5 数据库来做到这一点。


这是 HomeController 中用于注册登录用户加载主视图的代码。


public function index()

{

    Log::info('Utente collegato: '.Auth::user()->name);

    return view( config('configpath.user_home') );// loading user homepage

}

下面的代码在 Laravel 默认的 LoginController 中


public function userLogout()

{

    Log::info('User '.Auth::user()->name. 'has logged out');

    Auth::guard('web')->logout();

    return redirect()->route('login');

}

使用注销时,我希望在登录时看到有关用户注销的消息,但我没有看到。有人可以给我一个解释吗?谢谢!


莫回无
浏览 666回答 3
3回答

慕桂英4014372

您可以监听Login和Logout事件以记录操作。为此,请将以下内容添加到boot()您的方法中EventServiceProvider:Event::listen(\Illuminate\Auth\Events\Login::class, function ($event) {    \Log::info("User login: {$event->user->name}");});Event::listen(\Illuminate\Auth\Events\Logout::class, function ($event) {    \Log::info("User logout: {$event->user->name}");});使用此方法,您不必覆盖现有的和框架提供的控制器操作。

繁星淼淼

您必须覆盖正确的方法。我认为 userLogout 永远不会从框架中调用。/** * Log the user out of the application. * * @param  \Illuminate\Http\Request  $request * @return \Illuminate\Http\Response */public function logout(Request $request){    Log::info('User '.Auth::user()->email.' has logged out');    Auth::guard('web')->logout();    return redirect()->route('login');}

三国纷争

你需要在 app/Http/Controllers/Auth/LoginController.php 中设置一个注销方法public function logout(Request $request){  Log::info('User '.Auth::user()->email.' has logged out');  $this->guard()->logout();  $request->session()->invalidate();  return redirect()->route('login');}如果您设置了默认身份验证路由,则此方法将在注销时调用,并且 Log 将在注销时添加到 laravel.log 文件中。
打开App,查看更多内容
随时随地看视频慕课网APP