(我是Laravel的初学者)
我正在使用Laravel 5.2
。我已成功启用身份验证;通过php artisan make:auth
和其他东西。
所以我的登录工作正常。
现在我需要在有人登录后做点什么。举个简单的例子:
LOGIN:
$request->session()->put('UserAgent', $ClientUserAgent);
LOGOUT:
$request->session()->forget('UserAgent');
我不确定是否有hooks
或Event Listeners
,Event Handlers
之类的东西。
我该怎么办?
答案 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
进行后退出。
答案 3 :(得分:1)
Alief's Answer可以正常工作。但是当我搜索到时,使用事件处理程序可能是更受欢迎的方式。 (它像自定义挂钩一样工作)。
所以,不要对下面的Alief的答案有任何尊重,让我选择 - > this Event Handers approach我刚刚发现了。
感谢所有人!
答案 4 :(得分:1)
如果您正在测试,请使用streamoff
方法不要在此方法内部使用警报进行测试,它不会显示任何结果,因此最好放置一些插入查询或类似的东西进行测试这种方法。