Laravel 5.2:用户登录后做了什么?

时间:2016-04-08 03:31:46

标签: php laravel authentication event-handling laravel-5.2

(我是Laravel的初学者)

我正在使用Laravel 5.2。我已成功启用身份验证;通过php artisan make:auth和其他东西。

所以我的登录工作正常。

现在我需要在有人登录后做点什么。举个简单的例子:

LOGIN:

  • 用户登录后,将值写入会话。
  • 例如:$request->session()->put('UserAgent', $ClientUserAgent);

LOGOUT:

  • 同样的事情,一旦用户注销,删除自定义会话值。
  • 例如:$request->session()->forget('UserAgent');

我不确定是否有hooksEvent ListenersEvent Handlers之类的东西。

我该怎么办?

5 个答案:

答案 0 :(得分:11)

对于帖子登录,您可以通过修改App / Http / Controllers / Auth / AuthController.php

来实现。

authenticated()添加到该类中以覆盖默认值:

protected function authenticated(Request $request, User $user){
   //put your thing in here

   return redirect()->intended($this->redirectPath());
}

在课堂上也包括这个:

 use Illuminate\Http\Request;

对于注销,请将此功能添加到同一个类中:

protected function getLogout()
{
    Auth::logout();

    //do something here

    return redirect('/');
}

并且在课堂上也包括这个:

use Auth;

答案 1 :(得分:10)

适用于较新版本的Laravel

如果你只是做一些非常简单的事情,那么创建一个事件处理程序似乎对我来说太过分了。为此,Laravel在AuthenticatesUsers类中包含一个空方法。

只需将以下方法放在app\Http\Controllers\LoginController内(覆盖它):

protected function authenticated(Request $request, $user)
{
    // stuff to do after user logs in
}

答案 2 :(得分:3)

您可以尝试为触发的Auth事件设置事件侦听器。

您可以设置一个侦听Illuminate\Auth\Events\Login的侦听器,以便在登录后处理您需要的内容,并Illuminate\Auth\Events\Logout进行后退出。

Laravel Docs - Authentication - Events

答案 3 :(得分:1)

下面的

Alief's Answer可以正常工作。但是当我搜索到时,使用事件处理程序可能是更受欢迎的方式。 (它像自定义挂钩一样工作)。

所以,不要对下面的Alief的答案有任何尊重,让我选择 - > this Event Handers approach我刚刚发现了。

感谢所有人!

答案 4 :(得分:1)

如果您正在测试,请使用streamoff方法不要在此方法内部使用警报进行测试,它不会显示任何结果,因此最好放置一些插入查询或类似的东西进行测试这种方法。