2016-02-03 1 views
0

Сегодня я перешел с 5.1 на 5.2 и хотел, чтобы аутентификация работала. Но он не сохраняется и сам. Я использую Googles OAuth 2.0 и сохраняю идентификатор и имя в базе данных.Laravel 5.2 Auth :: login() не сохраняется

// OAuth flow.. 

Auth::loginUsingId($google_plus_id); 

return redirect('/debug'); 

На пути отладки Я только dd(auth()->user()).
Но это всегда возвращает null после перенаправления.

Когда я вхожу в систему и после этого dd() аутентифицированный пользователь, он работает.
Но перенаправление на другой маршрут, и это NULL

Я в курсе новой промежуточного слоя-группа сети и поэтому мой routes.php выглядит так:

Route::group([ 'middleware' => [ 'web' ] ], function() { 

    Route::get('/auth/google', [ 
     'as' => 'google.login', 
     'uses' => 'Auth\[email protected]' 
    ]); 

    Route::get('/auth/google/callback', [ 
     'as' => 'google.callback', 
     'uses' => 'Auth\[email protected]' 
    ]); 

    Route::get('/debug', function(){ 
     dd(auth()->user()); 
    }); 
}); 

auth.php конфигурация файл также настроен.

'providers' => [ 
    'users' => [ 
     'driver' => 'eloquent', 
     'model' => App\Http\Models\GooglePlusUser::class, 
    ], 
], 

И класс GooglePlusUser использует аутентифицируемый признак. Вся эта настройка отлично работала в L5.1, но почему-то это возится в 5.2, и я не могу найти почему.

+0

Единственное, что я могу (и помните, что это может быть неправильно или не полезно) находится в вашей папке config, в файле session.php есть атрибут lifetime. Если это значение равно 0, оно выйдет из системы сразу после входа в систему. –

+0

К сожалению, это не так, как я думал об этом. Это значение по умолчанию 120 минут. – Krenor

ответ

1

Не знаете, почему это происходит, возможно, базовая модель Eloquent была изменена сама, но она обработала идентификатор как целое число, вызывая максимальное значение целого числа. Однако идентификатор google имеет длину 21 символ, поэтому сохраняется в базе данных как строка, а не int. Применение мутатора в классе GooglePlusUser для его устранения решило его.

РЕДАКТИРОВАТЬ: Похоже, его линию 2690 в Eloquent модели, которая ссылка на эту функцию:

public function getCasts() 
{ 
    if ($this->incrementing) { 
     return array_merge([ 
      $this->getKeyName() => 'int', 
     ], $this->casts); 
    } 

    return $this->casts; 
} 

EDIT 2: Более легкий подход, чем при использовании мутатора использует protected $casts = [ 'id' => 'string' ];Laravel Docs

 Смежные вопросы

  • Нет связанных вопросов^_^