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

时间:2016-05-30 05:29:24

标签: php laravel

我的用户登录后,我希望将它们重定向到一条路线,该路线包含与其相关的模型之一。我在auth控制器中编辑了$ redirectTo变量,如下所示:

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

我也试过

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

我得到两个非对象错误的属性。

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

2 个答案:

答案 0 :(得分:0)

您无法使用函数声明您的类属性,请参阅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());
    }
}

答案 1 :(得分:0)

尝试覆盖redirectPath

中的AuthController方法
public function redirectPath()
{
    return auth()->user()->state->slug;
}