我想在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');
}
注销后,我希望能看到与登录时有关的用户注销消息,但看不到。有人可以给我一个解释吗?谢谢!
答案 0 :(得分:3)
您必须重写正确的方法。我认为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');
}
答案 1 :(得分:1)
您可以侦听Login
和Logout
事件以记录操作。为此,请将以下内容添加到boot()
的{{1}}方法中:
EventServiceProvider
使用此方法,您不必重写现有的和框架提供的控制器操作。
答案 2 :(得分:0)
您需要在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文件中。