(我是Laravel的初学者)
我正在使用Laravel 5.2
。我已成功启用身份验证;通过做CCD_ 2和填充。
所以我的登录有效。
现在,一旦有人登录,我需要做一些事情。举个简单的例子:
登录:
- 用户登录后,将值写入会话
- 例如:
$request->session()->put('UserAgent', $ClientUserAgent);
注销:
- 同样的做法是,一旦用户注销,就删除自定义会话值
- 例如:
$request->session()->forget('UserAgent');
我不确定是否有hooks
、Event Listeners
、Event 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;