[英]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
事件以记录操作。 为此,请将以下内容添加到EventServiceProvider
的boot()
方法中:
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.