2016-10-28 3 views
1

laravel 5.3의 기본값 인 laravel auth를 사용했습니다. 내가 궁금한 것은 성공적인 로그인시 세션에 추가 정보를 어떻게 추가 할 수 있습니까? 내가 정보를 가져올 수 그래서 내가 당신이 사용자 객체을 통해 접속의 직접 대신 세션 외관을 사용하는 것이 좋습니다laravel 5.3의 인증 세션에 추가 정보 추가

$user = Auth::user()->someField 
+0

Auth :: user()가 반환 한 User 객체를 통해 원하는 이유가 있습니까? Session facade를 직접 사용하지 않는 이유는 무엇입니까? –

+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', 
    ], 
]; 
+0

나는 그 일을했지만 아무 것도 세션에 저장되지 않고있다. 세션도 존재하지 않습니다. 나는 심지어 공급자 정보를 추가했다. –