Kar*_*hik 2 php session-variables laravel laravel-5 laravel-5.3
使用Laravel进行发票应用程序开发.我为settings表中的每个用户存储日期和金额格式.
当用户登录他们的帐户时如何设置Session变量?请提出任何建议.我正在使用Laravel 5.3.
Sha*_*rom 10
当然,文档告诉我们如何存储会话数据*,但它们没有解决OP关于在登录时存储会话数据的问题.您有几个选项,但我认为最明确的方法是覆盖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);
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以将会话设置为:
protected function setUserSession($user)
{
session(
[
'last_invoiced_at' => $user->settings->last_invoiced_at,
'total_amount_due' => $user->settings->total_amount_due
]
);
}
Run Code Online (Sandbox Code Playgroud)
如果您想要更聪明一点,可以为Login或Authenticated事件创建一个监听器,并在其中一个事件*触发时设置会话.
创建一个侦听器,例如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
]
);
}
}
Run Code Online (Sandbox Code Playgroud)
*链接转到5.4,但这与5.3没有变化.
您可以使用两种不同的方法在会话中存储数据:Request 实例或使用提供的全局帮助器/函数。
请求实例
public function methodA(Request $request) {
$request->session()->put('KEY', 'VALUE');
}
Run Code Online (Sandbox Code Playgroud)
全球帮手
public function methodB() {
session(['key' => 'value']);
}
Run Code Online (Sandbox Code Playgroud)
您可以在文档中找到有关这两种方法的更多详细信息。