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


我的

用户登录后,我希望他们被重定向到包含与他们相关的模型之一的子域的路由。我已经像这样编辑了身份验证控制器中的$redirectTo变量:

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

我也试过

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

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

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

尝试在AuthController中覆盖redirectPath方法

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

不能使用函数来声明类属性,请参阅 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());
    }
}

最新更新