为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
莫回无 2021-07-13 17:00:23
我想在 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');}使用注销时,我希望在登录时看到有关用户注销的消息,但我没有看到。有人可以给我一个解释吗?谢谢!
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您可以监听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}");

});

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


查看完整回答
反对 回复 2021-07-16
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

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

}


查看完整回答
反对 回复 2021-07-16
?
三国纷争

TA贡献1804条经验 获得超7个赞

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


查看完整回答
反对 回复 2021-07-16
  • 3 回答
  • 0 关注
  • 665 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信