登录到授权用户关系后重定向

问题描述:

我的用户登录后,我希望它们被重定向到包含它们相关模型的一个子弹的路线。我已编辑的身份验证控制器的$ redirectTo变量是这样的:登录到授权用户关系后重定向

protected $redirectTo = '/auth()->user()->country->slug'; 

我也曾尝试

protected $redirectTo = '/{{auth()->user()->country->slug}}'; 

我得到非对象错误的属性兼而有之。

对此的任何解决方案,所以我可以将我的用户重定向到包含它们各自状态的段落的路由?

+0

如何双引号? – Chay22

+0

@ Chay22我试过用单引号和双引号,同样的属性非对象错误 – DanielPahor

尝试重写redirectPath方法在AuthController

public function redirectPath() 
{ 
    return auth()->user()->state->slug; 
} 
+0

非常感谢,这很好。注销和注册后是否有类似的重定向功能? – DanielPahor

+0

签出'AuthenticatesAndRegistersUsers'特性中的'getLogout'方法 – huuuk

+0

@DanielPahor注册使用与登录'redirectPath()'相同的重定向路径,但注销它使用'redirectAfterLogout'属性,如果你想重定向,你必须重写'logout()'方法用户到他们州的slu。。 – Rifki

不能使用的功能来声明类属性,看http://php.net/language.oop5.properties

这个声明可能包括初始化,但初始化必须是一个恒定值 - 也就是说,它必须能够进行评估在编译时并且不能依赖运行时信息才能进行评估。

如果您有属性,必须使用函数来定义它使用__construct()方法,如:

class MyClass 
{ 
    protected $myproperty; 

    public function __construct() 
    { 
     $this->myproperty = somefunction(); 
    } 
} 

但这种情况下,你不能用那种方式,因为当类没有启动用户认证尚未。相反,您可以在控制器上使用authenticated()方法。

class AuthController extends Controller 
{ 
    ... 

    public function authenticated() 
    { 
     if($path = Auth::guard($this->getGuard())->user()->state->slug){ 
      return redirect($path); 
     } 

     return redirect()->intended($this->redirectPath()); 
    } 
}