2016-08-20 74 views
1

我按照這裏的說明進行登錄頁面。它正在工作;但是我無法使重定向動態。我的意思是,我想根據用戶的角色(我已經定義的自定義模型)將用戶重定向到不同的URL。登錄後動態重定向不工作Laravel 5.1

這裏是我的AuthController(我已經刪除樣板):

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。我有dd($this->redirectTo),它顯示了預期值。

如何在用戶通過身份驗證後動態設置重定向路徑?

+1

這裏有一個Laravel 5.4的更新答案https://stackoverflow.com/a/45529876/3200896 – plexus

回答

1

您需要將redirectTo屬性的可見性改變爲protected,而不是private

因此,在AuthController變線2本;

protected $redirectTo = '/test'; 

當屬性具有private可視性,它只能在同一類(AuthController

Laravel檢查以查看$redirectTo屬性是否登錄後重定向之前就存在內訪問。因爲你的$redirectTo屬性是private,它無法找到它,因此重定向到默認/home/

希望這會有所幫助。