在laravel 5.3中向验证会话添加了额外的信息


adding additional information to the auth session in laravel 5.3

我使用了laravel 5.3默认的laravel授权。我想知道的是如何在成功登录的会话中添加额外的信息?这样我就可以用

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

我建议您直接使用Session facade,而不是通过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',
  ],
];