php - Laravel 用户登录时如何设置 session 变量

标签 php laravel laravel-5 session-variables laravel-5.3

发票应用程序正在使用 Laravel 进行开发。我将每个用户的日期和金额格式存储在 settings 中 table 。

用户登录时如何设置Session多变的?请提出任何建议。我正在使用 Laravel 5.3。

最佳答案

当然,文档告诉我们如何 store session data *,但它们没有解决 OP 关于存储 session 数据的问题 在登录 .您有几个选择,但我认为最明确的方法是覆盖 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);
}

然后您可以将 session 设置为:
protected function setUserSession($user)
{
    session(
        [
            'last_invoiced_at' => $user->settings->last_invoiced_at,
            'total_amount_due' => $user->settings->total_amount_due
        ]
    );
}

如果您想更聪明一点,您可以为 Login 或 Authenticated 事件创建一个监听器,并在其中之一时设置 session 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 没有变化。

关于php - Laravel 用户登录时如何设置 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42360183/

相关文章:

.htaccess - 在 Laravel 5 项目上应用 SSL 后所有路由上的 404

php - Mysql在错误的用户ID中输入数据(图像)并且数据库自动创建新的用户ID

php - Htaccess 和上传

php - MySQL:使用一组列作为 ID (SKU)

mysql - 无法存储新行 - SQLSTATE [23000] : Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails

Laravel Elixir : How to minify files?

laravel-5 - 在 Blade 模板中使用命名 URL

php - 如何检查一个对象是否为空?

php - 无法向sql表中插入数据

select - Laravel Eloquent 查询类似于 findorfail