Laravel 5.2:在用户登录后做一些事情



(我是Laravel的初学者)

我正在使用Laravel 5.2。我已成功启用身份验证;通过做CCD_ 2和填充。

所以我的登录有效。

现在,一旦有人登录,我需要做一些事情。举个简单的例子:

登录:

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

注销:

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

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

我该怎么做?

对于较新版本的Laravel

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

只需在appHttpControllersLoginController中放置以下方法(覆盖它):

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

对于后登录,可以通过修改App/Http/Controllers/Auth/AuthController.php 来完成

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

use IlluminateHttpRequest;
protected function authenticated(Request $request, User $user) {
   // put your thing in here
   return redirect()->intended($this->redirectPath());
}

对于注销,将此函数添加到同一类中:

use Auth;
protected function getLogout()
{
    Auth::logout();
    // do something here
    return redirect('/');
}

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

您可以设置一个侦听器,侦听IlluminateAuthEventsLogin以处理登录后所需的内容,并侦听IlluminateAuthEventsLogout以处理注销后所需内容。

Laravel文档-身份验证-事件

Alief下面的回答工作正常。但当我在谷歌上搜索时,使用事件处理程序可能是更可取的方式。(它的工作原理类似于自定义挂钩)。

因此,在对下面Alief的回答不失尊重的情况下,让我选择-->我刚刚发现的这种事件处理方法。

谢谢大家的问候!

如果你正在测试,使用authenticated(Request $request, User $user)方法不要在这个方法中使用alert来测试,它不会显示任何结果,所以最好放一些插入查询或类似的东西来测试这个方法。

为什么不简单地检查

if(Auth::check()){
    //your code
}

确保包含use Auth;

相关内容

  • 没有找到相关文章

最新更新