2016-08-28 1 views
0

Я пытаюсь создать сайт Laravel, который использует Пакет Laravel's Auth. Я использую Laravel 5.3.2.Как проверить параметр из таблицы пользователя при аутентификации в Laravel?

Я создал поле в таблице пользователей role.

Теперь я хочу знать, как проверить роль пользователя во время процесса аутентификации, а затем перенаправить на требуемое представление в зависимости от роли. Пожалуйста, помогите мне разобраться, как это будет возможно.

спасибо, что заранее.

+0

Просьба проверить этот ответ http://stackoverflow.com/a/28992717/3081659 – Noman

+0

Аутентификаторы Laravel сильно изменены в 5.3, так что ответ не применим к 5.3 laravel :) Больше не существует 'postLogin() 'метод, а не метод' authenticated() ', который запускается после того, как пользователь был успешно зарегистрирован в – Pistachio

ответ

3

Когда пользователь входит в систему, это делается через LoginController.php, который расположен на app\Http\Controllers\Auth

Этот контроллер использует черту под названием AuthenticatesUsers.

Эта черта имеет метод authenticated(), который по умолчанию пуст. Этот метод вызывается, если он не является пустым по признаку - после того, как был сделан все необходимый loggin.

Вы можете переопределить этот метод в своем AuthenticationController.php и добавить функциональность, о которой вы просите. Примером может быть:

// You actually get an Auth\User object passed to you by the trait! 
public function authenticated(Request $request, $user) 
{ 
    if($user->role == 'admin') { 
     // You could do anything here 
     return redirect()->route('admin-dashboard'); 
    } else { 
     return redirect()->route('home'); 
    } 
} 
+0

. Оба комментария обоих гентльменов очень полезны, и я многому научился их идеями. Я также нашел ссылку, которая может быть полезна: [link] (https://josephsilber.com/posts/2016/07/10/authentication-improvements-in-laravel-5-3#table-of-contents) – Tower

1

Кроме решение перекрывая некоторые по умолчанию метод Laravel. Я предложить в другой подход: перенаправление пользователя на маршрут, который отвечает для перенаправления пользователя базы на роль пользователя

В AuthController

protected $redirectTo = '/redirect'; 

В маршрутах

Route::get('redirect', function(){ 
    switch(auth()->user()->role){ 
     case 1: 
      return redirect()->to(); 
     break; 
     case 2: 
      return redirect()->to(); 
     break; 
    } 
})