1

Я разрабатываю простой логин в laravel 5.3.Пользовательское представление для аутентифицированного пользователя в laravel 5.3

У меня есть два dashboard, в которых один предназначен для admins, а другой для subscribers. Я просмотрел документацию об аутентификации, там есть настройка пути, где, если я могу изменить $redirectTo = '/home' на любой из маршрутов, он будет перенаправлять представления соответственно.

У меня есть столбец в моей таблице пользователей с именем is_admin, который содержит логическое значение.

Я пытаюсь поместить следующие коды в LoginController согласно документации:

<?php 

namespace App\Http\Controllers\Auth; 

use Illuminate\Http\Request; 
use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 
use \Auth; 

class LoginController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Login Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller handles authenticating users for the application and 
    | redirecting them to your home screen. The controller uses a trait 
    | to conveniently provide its functionality to your applications. 
    | 
    */ 

    use AuthenticatesUsers; 

    /** 
    * Where to redirect users after login. 
    * 
    * @var string 
    */ 
//  protected $redirectTo = '/home'; 

    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 

    public function __construct() 
    { 
     $this->middleware('guest', ['except' => 'logout']); 
    } 

    /** 
    * Handle an authentication attempt. 
    * 
    * @return Response 
    */ 

    public function redirectPath() 
    {  
     if (Auth::user()->is_admin == 0) 
     {  

      return redirect()->intended('/memberprofile'); 
     } 
     else 
     { 

      return redirect('/dashboard');  
     } 
    } 
} 

и закомментирован protected $redirectTo = '/home'; но он все еще перенаправлению дома. Даже если я делаю protected $redirectTo = '/dashboard', он маршрутизирует то же самое, что и /home. Я не знаю, где проблема.

Я проверил RedirectIfAunthenticated межплатформенное он имеет следующий код:

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     return redirect('/home'); 
    } 
    return $next($request); 
} 

Есть ли какие-либо проблемы в связи с этим?

Пожалуйста направьте меня

ответ

1

Изменить handle() метод в вашем app\Http\Middlewares\RedirectIfAunthenticated.php следующим образом. Это промежуточное программное обеспечение предназначено для изменения разработчиками.

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     if (Auth::user()->is_admin == 0) { 
      return redirect()->intended('/memberprofile'); 
     } else { 
      return redirect('/dashboard');  
     } 
    } 

    return $next($request); 
} 
+1

Спасибо, он работал, приветствует! –

+0

@mustafa By меняя «RedirectIfAunthenticated», вы меняете смысл «промежуточного ПО» гостевого. Это может вызвать проблемы i n для приложения. –

0

В вашем LoginController определяют следующие функции:

public function redirectPath() 
{ 
    if (Auth::user()->is_admin == 0) 
    {  
     return redirect()->intended('/memberprofile'); 
    } 
    else 
    { 
     return redirect('/dashboard');  
    } 
} 

Это отменит функцию redirectPath, определенный в черте Illuminate\Foundation\Auth\RedirectsUsers.

+0

Это все равно. :( –

+0

Можете ли вы показать свой 'LoginController' в своем вопросе? –

+0

Я надеюсь, что ваш маршрут'/memberprofile' и '/ dashboard' не находится под промежуточным ПО« guest ». Если это так, пожалуйста, удалите его, потому что промежуточное ПО' guest' может вызвать эта проблема. –

0

Согласно Laravel Docs, когда пользователь успешно прошел аутентификацию, они будут перенаправлены на URI /home. Вы можете настроить расположение перенаправления после аутентификации пути определения свойства RedirectTo на LoginController, RegisterController и ResetPasswordController:

protected $redirectTo = '/your_own_route'; 

Надеется, что это помогает!

+0

Он не работает соответствующим образом. –

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

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