我目前正在编写一个应用程序,该应用程序只有公司员工的帐户,而不是常规网站访问者。 因此,我想将与网站的"管理员"区域相关的 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');