繁体   English   中英

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

[英]Log::info - Logging user logout in laravel.log

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

我使用带有MySQL 5数据库的Laravel 5.8来做到这一点。

这是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');
}

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

您必须重写正确的方法。 我认为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');
}

您可以侦听Login and Logout事件以记录操作。 为此,请将以下内容添加到EventServiceProviderboot()方法中:

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}");
});

使用此方法,您不必覆盖现有的和框架提供的控制器操作。

您需要在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文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM