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

时间:2019-05-28 08:59:52

标签: php laravel laravel-5 laravel-5.8

我想在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');
}

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

3 个答案:

答案 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)

您可以侦听LoginLogout事件以记录操作。为此,请将以下内容添加到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文件中。