【问题标题】:adding additional information to the auth session in laravel 5.3在 laravel 5.3 中向身份验证会话添加附加信息
【发布时间】:2016-10-31 16:58:23
【问题描述】:

我使用了 laravel 5.3 自带的 laravel 身份验证。我想知道如何在成功登录时向会话添加其他信息?这样我就可以使用

获取我需要的信息
$user = Auth::user()->someField

【问题讨论】:

  • 您是否有理由希望通过 Auth::user() 返回的用户对象来执行此操作?为什么不直接使用 Session 门面?
  • 用户登录后我会怎么做?我会把它放在哪里?

标签: php laravel laravel-5 laravel-5.3


【解决方案1】:

我建议你直接使用 Session 门面,而不是通过 User 对象访问它。

为了得到你需要的东西,你需要挂钩到 Laravel 的事件系统。

首先,您需要定义一个侦听器,该侦听器将在用户进行身份验证时触发,并将所有必要的数据放入会话中:

<?php namespace App\Listeners;

use Illuminate\Auth\Events\Login;
use Session;

class AddDataToUserSession
{
  public function handle(Login $loginEvent)
  {
    Session::put('key', 'some value you want to store in session for that user');

    // you can access the User object with $loginEvent->user
    Session::put('user_email', $loginEvent->user->email);
  }
}

然后您需要注册此侦听器,以便在用户登录时触发它。您可以在 EventServiceProvider 类中执行此操作。您需要将您的侦听器添加到登录事件触发的侦听器列表中:

protected $listen = [
  'Illuminate\Auth\Events\Login' => [
    'App\Listeners\AddDataToUserSession',
  ],
];

【讨论】:

  • 谢谢我这样做了,但会话中没有存储任何内容。会话甚至不存在。我什至添加了供应商信息
猜你喜欢
  • 2018-10-30
  • 2017-03-08
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
相关资源
最近更新 更多