有没有一种方法可以在 Laravel 中覆盖 RouteServiceProvider::HOME ?

irs*_*han 1 php laravel laravel-7

我最近开始学习 Laravel。我redirectTo()在我的 Laravel 应用程序中覆盖了默认 LoginController 中的方法。

class LoginController extends Controller
{
    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::HOME;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    protected function redirectTo()
    {
        return '/dashboard';
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但如果已通过身份验证的用户尝试再次登录(用户尚未注销并尝试访问“/login”路由),则用户将被重定向到“/home”,这显然是 RouteServiceProvider::HOME持续的。我可以简单地更改 RouteServiceProvider::HOME 常量,但肯定有更好的选择。此外,如果重定向取决于用户的角色,那么简单地更改常量不会有任何好处。那么重写 RouteServiceProvider::HOME 常量的正确方法是什么?

Sie*_*ion 5

它不是一种方法,而是一个常数。你可以在app\Providers\RouteServiceProviders.php 你会发现这一行中改变它:

public const HOME = '/home';
Run Code Online (Sandbox Code Playgroud)

随心所欲地改变它。如果您不想更改它而只在本地更改它

protected $redirectTo = RouteServiceProvider::HOME;
Run Code Online (Sandbox Code Playgroud)

线到

protected $redirectTo = '/whatever'
Run Code Online (Sandbox Code Playgroud)