1

laravel 5.3에 간단한 로그인을 만들고 있습니다.laravel의 인증 된 사용자에 대한 사용자 정의보기 5.3

저는 dashboard 중 하나가 admins을 의미하고 다른 하나는 subscribers을 의미합니다. 인증에 대한 문서를 살펴 보았습니다. 경로 사용자 정의가 있습니다. 여기서 $redirectTo = '/home'을 경로로 변경하면 뷰를 각각 리디렉션합니다.

나는 boolean 값을 보유하고있는 is_admin이라는 이름의 사용자 테이블에있는 열을 가지고 있습니다.

<?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';을 주석하지만 여전히 집으로 리디렉션됩니다 :

나는 문서에 따라 LoginController에 다음 코드를 배치하는 것을 시도하고있다. 내가 protected $redirectTo = '/dashboard'이라도 /home으로 라우팅됩니다. 나는 문제가 어디에 있는지 모른다.

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

문제는이 때문에 거기 :

나는이 코드를 다음 한 RedirectIfAunthenticated 미들웨어를 확인?

나에게 LoginController 정의 다음 함수에서

답변

1

다음과 같이 app\Http\Middlewares\RedirectIfAunthenticated.php에서 handle() 방법을 변경하십시오. 이 미들웨어는 개발자에 의해 변경 될 수 있습니다.

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'를 변경하면'guest' 미들웨어의 의미가 바뀌므로 문제가 발생할 수 있습니다. 응용 프로그램에 대해 장기간 실행됩니다. –

0

을 안내하십시오

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

그것은 특성 Illuminate\Foundation\Auth\RedirectsUsers에 정의 된 기능 redirectPath 우선합니다.

+0

여전히 동일합니다. : –

+0

질문에'LoginController'를 표시 할 수 있습니까? –

+0

'/ memberprofile'과'/dashboard' 경로가 'guest'미들웨어에 있지 않기를 바랍 으면'guest' 미들웨어가 원인이 될 수 있기 때문에 제거하십시오 이 문제는. –

0

Laravel Docs에 따르면 사용자가 성공적으로 인증되면 /home URI로 리디렉션됩니다. 당신은 LoginController, RegisterController에 redirectTo 속성을 정의하여 사후 인증 리디렉션 위치를 사용자 정의하고 ResetPasswordController 수 있습니다

protected $redirectTo = '/your_own_route'; 

희망이 도움이!

+0

적절하게 작동하지 않습니다 –