在Laravel 5.2中更改登录/注册URL


Change the login/register URL in Laravel 5.2

我目前正在编写一个应用程序,该应用程序只有公司员工的帐户,而不是常规网站访问者。 因此,我想将与网站的"管理员"区域相关的 URL 保留在/admin URL 下,这意味着将/login更改为 /admin/login/register更改为/admin/register

但是,我不知道如何在Laravel 5.2中更改登录和注册URL,似乎在以前的版本中,将protected $loginPath = '/admin/login';添加到Auth'AuthController很简单但是,将其添加到我的AuthController时没有区别。

以下是php artisan route:list的输出;

+--------+----------+-------------------------+------+-----------------------------------------------------------
| Domain | Method   | URI                     | Name | Action
+--------+----------+-------------------------+------+-----------------------------------------------------------
|        | GET|HEAD | /                       |      | App'Http'Controllers'PageController@index
|        | GET|HEAD | admin                   |      | App'Http'Controllers'AdminPageController@index
|        | GET|HEAD | admin/profile           |      | App'Http'Controllers'AdminPageController@profile
|        | GET|HEAD | login                   |      | App'Http'Controllers'Auth'AuthController@showLoginForm
|        | POST     | login                   |      | App'Http'Controllers'Auth'AuthController@login
|        | GET|HEAD | logout                  |      | App'Http'Controllers'Auth'AuthController@logout
|        | POST     | password/email          |      | App'Http'Controllers'Auth'PasswordController@sendResetLink
|        | POST     | password/reset          |      | App'Http'Controllers'Auth'PasswordController@reset
|        | GET|HEAD | password/reset/{token?} |      | App'Http'Controllers'Auth'PasswordController@showResetForm
|        | GET|HEAD | register                |      | App'Http'Controllers'Auth'AuthController@showRegistrationF
|        | POST     | register                |      | App'Http'Controllers'Auth'AuthController@register
+--------+----------+-------------------------+------+-----------------------------------------------------------

在 L5.2 中,所有身份验证路由都分组在名为 Route::auth() 的路由中。

如果搜索符号auth(),则可以看到包含所有路由链接的 auth() 函数。

检查此文件:Illuminate'Routing'Router auth() 函数。

但我不确定在这里更改它是否是一种好习惯。

编辑:

因此,如果您需要更改默认身份验证路由,请包括所有路由 routes.php,然后根据需要更改 URI。

要获取参考:

    // Authentication Routes...
    Route::get('login', 'Auth'AuthController@showLoginForm');
    Route::post('login', 'Auth'AuthController@login');
    Route::get('logout', 'Auth'AuthController@logout');
    // Registration Routes...
    Route::get('register', 'Auth'AuthController@showRegistrationForm');
    Route::post('register', 'Auth'AuthController@register');
    // Password Reset Routes...
    Route::get('password/reset/{token?}', 'Auth'PasswordController@showResetForm');
    Route::post('password/email', 'Auth'PasswordController@sendResetLinkEmail');
    Route::post('password/reset', 'Auth'PasswordController@reset');
您可以在

前缀组中调用Route::auth()

Route::group(['prefix' => 'admin'], function() {
    Route::auth();
});
<</div> div class="answers">

更改供应商文件夹中的任何内容都是不好的做法,尤其是因为只要您运行作曲家更新,它们就会被覆盖。

因此,将Auth::routes(); routes/web.php更改为

    // Authentication Routes...
    $this->get('login', 'Auth'LoginController@showLoginForm')->name('login');
    $this->post('login', 'Auth'LoginController@login');
    $this->post('logout', 'Auth'LoginController@logout')->name('logout');
    // Registration Routes...
    $this->get('registers', 'Auth'RegisterController@showRegistrationForm');
    $this->post('registers', 'Auth'RegisterController@register');
    // Password Reset Routes...
    $this->get('password/reset', 'Auth'ForgotPasswordController@showLinkRequestForm');
    $this->post('password/email', 'Auth'ForgotPasswordController@sendResetLinkEmail');
    $this->get('password/reset/{token}', 'Auth'ResetPasswordController@showResetForm');
    $this->post('password/reset', 'Auth'ResetPasswordController@reset');

使用命名路由而不是使用Route::auth();

Route::get('/admin/login', 'Auth'AuthController@showLoginForm');
Route::post('/admin/login', 'Auth'AuthController@login');
Route::get('/admin/logout', 'Auth'AuthController@logout');

vendor/laravel/ui/src/AuthRouteMethods.php中,您可以自定义网址。

In Laravel v9.38.0 (PHP v8.1.6)您可以将 Auth::routes() 替换为下面的代码并生效所需的更改。

// Authentication Routes...
Route::get('login', [LoginController::class, 'showLoginForm'])->name('login');
Route::post('login', [LoginController::class, 'login']);
Route::post('logout', [LoginController::class, 'logout'])->name('logout');
// Registration Routes...
Route::get('register', [RegisterController::class, 'showRegistrationForm'])->name('register');
Route::post('register', [RegisterController::class, 'register']);
//Password Confirm
Route::get('password/confirm', [ConfirmPasswordController::class, 'showConfirmForm'])->name('password.confirm');
Route::post('password/confirm', [ConfirmPasswordController::class, 'confirm']);
// Password Reset Routes...
Route::get('password/reset', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('password.request');
Route::post('password/email', [ForgotPasswordController::class, 'sendResetLinkEmail'])->name('password.email');
Route::get('password/reset/{token}', [ResetPasswordController::class, 'showResetForm'])->name('password.reset');
Route::post('password/reset', [ResetPasswordController::class, 'reset'])->name('password.update');