当然,文档告诉我们如何存储会话数据 https://laravel.com/docs/5.4/session#storing-data*,但他们没有解决OP关于存储会话数据的问题at login。您有几个选择,但我认为最清晰的方法是覆盖 AuthenticatesUsers 特征的经过身份验证的方法。
将覆盖添加到您的 LoginController:
/**
* The user has been authenticated.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function authenticated(Request $request, $user)
{
$this->setUserSession($user);
}
然后您可以将会话设置为:
protected function setUserSession($user)
{
session(
[
'last_invoiced_at' => $user->settings->last_invoiced_at,
'total_amount_due' => $user->settings->total_amount_due
]
);
}
如果您想更聪明一点,您可以为“登录”或“已验证”事件创建一个侦听器,并在其中之一发生时设置会话events https://laravel.com/docs/5.4/authentication#events* 火灾。
创建一个监听器,例如 SetUpUserSession:
<?php
namespace app\Listeners;
use Illuminate\Auth\Events\Login;
class SetUserSession
{
/**
* @param Login $event
* @return void
*/
public function handle(Login $event)
{
session(
[
'last_invoiced_at' => $event->user->settings->last_invoiced_at,
'total_amount_due' => $event->user->settings->total_amount_due
]
);
}
}
*链接转到 5.4,但这与 5.3 相比没有变化。