在laravel 5.3中向auth会话添加其他信息

时间:2016-10-28 03:27:12

标签: php laravel laravel-5 laravel-5.3

我使用了laravel 5.3默认的laravel auth。我想知道的是,如何在成功登录时向会话添加其他信息?这样我就可以用

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

1 个答案:

答案 0 :(得分:1)

我建议您直接使用会话外观,而不是通过用户对象访问它。

为了得到你需要的东西,你需要加入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',
  ],
];