Laravel 5.2 : 登录 "attempt" 事件处理
Laravel 5.2 : Login "attempt" Event Handling
在 Laravel 5.2 中,我需要在 触发身份验证过程时做一些事情。 (不是 "after" 登录。)
这是我所做的。
在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;
}
}
这总是returnsnull
。
** 事实上,我在登录表单中有一个 "custom" 字段,我需要从上面的事件处理程序中捕获它。 (在 实际登录事件完成之前,我需要检查一些东西 。)
- 我如何从这个 (Illuminate\Auth\Events\Attempting) 处理程序中捕获
Auth::user()
?
- (换句话说)我如何与 (Illuminate\Auth\Events\Attempting) 处理程序的登录表单对话?
- 或 -----
Auth::user()
对象是否仅在登录完全处理后创建?这意味着我在 "attempting" 阶段无法获得它?
因为我需要先捕获 登录元素,如果它是某种东西 "unauthorized" (在 Handler 中完成一些计算之后),然后我需要终止登录尝试并从这里路由回登录表单。通过携带失败消息。
请让我知道我在这里缺少什么。谢谢。
根据 documentation 你是对的 Auth::user()
对象仅在用户通过身份验证时创建。
在 Illuminate\Auth\Events\Attempting 侦听器内部;
您可以通过
捕获表单字段
public function handle(Attempting $event)
{
//return dd($event); // will echo all fields
$event->credentials['email']; // capturing the email field
}
您还可以使用用户模型,然后访问数据库中的用户 table,以获取/检查数据库中的用户字段...
在 Laravel 5.2 中,我需要在 触发身份验证过程时做一些事情。 (不是 "after" 登录。)
这是我所做的。
在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;
}
}
这总是returnsnull
。
** 事实上,我在登录表单中有一个 "custom" 字段,我需要从上面的事件处理程序中捕获它。 (在 实际登录事件完成之前,我需要检查一些东西 。)
- 我如何从这个 (Illuminate\Auth\Events\Attempting) 处理程序中捕获
Auth::user()
? - (换句话说)我如何与 (Illuminate\Auth\Events\Attempting) 处理程序的登录表单对话?
- 或 -----
Auth::user()
对象是否仅在登录完全处理后创建?这意味着我在 "attempting" 阶段无法获得它?
因为我需要先捕获 登录元素,如果它是某种东西 "unauthorized" (在 Handler 中完成一些计算之后),然后我需要终止登录尝试并从这里路由回登录表单。通过携带失败消息。
请让我知道我在这里缺少什么。谢谢。
根据 documentation 你是对的 Auth::user()
对象仅在用户通过身份验证时创建。
在 Illuminate\Auth\Events\Attempting 侦听器内部; 您可以通过
捕获表单字段public function handle(Attempting $event)
{
//return dd($event); // will echo all fields
$event->credentials['email']; // capturing the email field
}
您还可以使用用户模型,然后访问数据库中的用户 table,以获取/检查数据库中的用户字段...