在Laravel 5.2中,我需要做一些,而正在触发身份验证过程。 (不是“登录后”。)
以下是我的所作所为。
在EventServiceProvider.php
:
protected $listen = [
'Illuminate\Auth\Events\Attempting' => ['App\Listeners\UserLoginAttempt@handle'],
];
在app/Listeners/UserLoginAttempt.php
:
<?php
namespace App\Listeners;
use Illuminate\Http\Request;
use Illuminate\Auth\Events\Login;
use Carbon\Carbon;
use Auth;
class UserLoginAttempt
{
public function __construct()
{
}
public function handle($event)
{
dd(Auth::user());
exit;
}
}
这总是返回null
。
**实际上,我在登录表单中有一个“自定义”字段,我需要从上面的事件处理程序中捕获。 (我需要在实际登录事件完成之前检查。)
Auth::user()
(Illuminate \ Auth \ Events \ Attempting)处理程序?Auth::user()
对象?这意味着在“尝试”阶段我无法得到它?因为我需要首先捕获登录元素,如果它是“未经授权的”(在Handler中完成一些计算之后),那么我需要终止登录尝试并从此处返回登录表单..通过携带失败消息。
请让我知道我在这里缺少什么。谢谢。
答案 0 :(得分:1)
根据documentation,您是对的,Auth::user()
对象仅在用户通过身份验证时创建。
答案 1 :(得分:1)
Illuminate \ Auth \ Events \ Attempting listener; 您可以通过
捕获表单字段public function handle(Attempting $event)
{
//return dd($event); // will echo all fields
$event->credentials['email']; // capturing the email field
}
您也可以使用用户模型,然后访问DB中的用户表,以获取/检查数据库中的用户字段...