【问题标题】:Laravel 5.2 Auth routingLaravel 5.2 认证路由
【发布时间】:2025-12-26 10:40:12
【问题描述】:

我在使用 laravel 路由时遇到问题。

我想要这样的路线:

/  - home page for unauthenticated users
/login  - login page
/register  - register page
/dashboard  - home page for authenticated users

登录后我希望用户重定向到/dashboard,如果经过身份验证的用户转到/或任何其他不受保护的路线,我也想将他重定向到/dashboard。

我的路线.php。

`Route::get('/', 'HomeController@index');
 Route::group(['middleware' => 'web'], function () {


    Route::auth();

    Route::get(‘/dashboard’, ‘DashboardController@index');
    Route::get('/logout', 'Auth\AuthController@logout');


});`

这可行,但是如果经过身份验证的用户转到 / 或任何其他不受保护的路线,我想将他重定向到 /dashboard。我怎样才能做到这一点?

【问题讨论】:

  • 在您的 HomeController@index 方法中,进行检查并将 Auth 用户重定向到仪表板。 Auth::check() ? return redirect()->url('/dashboard') : '';
  • 谢谢,现在可以使用了。
  • 我会把它作为答案发布

标签: php laravel laravel-routing laravel-5.2


【解决方案1】:

取自 Laravel 文档。

路径自定义

当用户成功通过身份验证时,他们将被重定向到 / URI。您可以通过在 AuthController 上定义 redirectTo 属性来自定义身份验证后重定向位置:

protected $redirectTo = '/home';

当用户未成功通过身份验证时,他们将被自动重定向回登录表单位置。

在此处查看更多信息。 https://laravel.com/docs/5.2/authentication#included-routing

【讨论】:

    【解决方案2】:

    你需要设置 ::

    受保护的 $redirectTo = '/home'

    在 AuthController 中,它将覆盖 AuthController 使用的 Trait 中的 $redirectTo 变量。

    你也可以用同样的方法改变redirectAfterLogout url。

    !!快乐编码。

    【讨论】:

    • 我添加了 $redirectTo = "/dashboard" 并且用户在登录后立即被重定向到 /dashboard,这很好。我在这里要问的是,如果用户登录后转到某个公共路线,我想将他重定向到 /dashboard。
    • 您可以创建一个中间件,其逻辑与 Auth::check() 重定向到仪表板的逻辑相同。以及那些中间件到路由。
    【解决方案3】:

    在您的 HomeController@index 方法中,进行检查并将 Auth 用户重定向到仪表板。 Auth::check() ? return redirect()->url('/dashboard') : '';

    【讨论】:

    • 如果/ 是在HomeController@index 中处理此问题的唯一不受保护的路由会很好,但没有迹象表明是这种情况,因此您的建议应该在中间件中处理。
    • @Bogdan 是的,这是真的,我希望能够从每条路线重定向用户。我将如何在中间件中处理这个问题?