2016-08-20 45 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/

希望这会有所帮助。