2016-08-20 7 views
1

ここでは、ログインページを作成するための手順を説明しました。それは働いている。しかし、私はリダイレクトの動的な作成に問題があります。私が意味することは、ユーザーの役割(既に定義したカスタムモデル)に基づいて、ユーザーを別のURLにリダイレクトしたいということです。ログイン後の動的リダイレクトがLaravel 5.1で機能していない

use AuthenticatesAndRegistersUsers, ThrottlesLogins; 
private $redirectTo = '/test'; 

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

    $this->redirectTo = '/dashboard'; 
    $user = \Auth::user(); 
    if (($user->admin()) { 
    // an admin 
     $this->redirectTo = '/admin'; 
    } else { 
    // it's a client 
     $this->redirectTo = '/client/dashboard'; 
    } 
} 

protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'name' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users', 
     'password' => 'required|confirmed|min:6', 
    ]); 
} 

しかし、それはまだ/homeにみんなをリダイレクトします。ここでは

は私AuthController(私は定型文を削除した)のです。私はdd($this->redirectTo)を持っており、期待値を示しています。

ユーザーが認証された後にリダイレクトパスを動的に設定するにはどうすればよいですか?

+1

Laravel 5.4に関する最新の回答があります。https://stackoverflow.com/a/45529876/3200896 – plexus

答えて

1

は、あなたはとてもprivate

、これにAuthControllerの変更ライン2の代わりにprotectedにredirectToプロパティの可視性を変更する必要があります。

性が private視認性を有する場合、それは、同じクラス内でアクセスすることができる
protected $redirectTo = '/test'; 

AuthController

Laravelは$redirectToプロパティがログイン後にリダイレクトする前に存在するかどうかをチェックします。 $redirectToプロパティがprivateだったため、それを見つけることができなかったため、デフォルトにリダイレクトされました。/home/

希望します。

関連する問題