php 覆盖 Laravel >= 5.4 中的默认 Auth 路由
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/43224300/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Override default Auth routes in Laravel >= 5.4
提问by Kiren Siva
I want to override /login
route to /admin/login
. In web.php
I tried
我想覆盖/login
到/admin/login
. 在web.php
我试过
//Auth::routes();
Route::get('login', ['as' => 'auth.login', 'uses' => 'App\Modules\Admin\Controllers\AdminUserController@loginAdminUser'])->name('login');
But it is still showing Laravel default login form. How can I do this?
但它仍然显示 Laravel 默认登录表单。我怎样才能做到这一点?
回答by Gordon Freeman
For the googlers, here is a full list of routes that are getting generated by Auth::routes();
in Laravel >= 5.4
对于 googlers,这里是Auth::routes();
在 Laravel >= 5.4 中生成的路由的完整列表
// Authentication Routes...
Route::get('login', [
'as' => 'login',
'uses' => 'Auth\LoginController@showLoginForm'
]);
Route::post('login', [
'as' => '',
'uses' => 'Auth\LoginController@login'
]);
Route::post('logout', [
'as' => 'logout',
'uses' => 'Auth\LoginController@logout'
]);
// Password Reset Routes...
Route::post('password/email', [
'as' => 'password.email',
'uses' => 'Auth\ForgotPasswordController@sendResetLinkEmail'
]);
Route::get('password/reset', [
'as' => 'password.request',
'uses' => 'Auth\ForgotPasswordController@showLinkRequestForm'
]);
Route::post('password/reset', [
'as' => 'password.update',
'uses' => 'Auth\ResetPasswordController@reset'
]);
Route::get('password/reset/{token}', [
'as' => 'password.reset',
'uses' => 'Auth\ResetPasswordController@showResetForm'
]);
// Registration Routes...
Route::get('register', [
'as' => 'register',
'uses' => 'Auth\RegisterController@showRegistrationForm'
]);
Route::post('register', [
'as' => '',
'uses' => 'Auth\RegisterController@register'
]);
php artisan route:list
will return
php artisan route:list
将返回
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest |
| | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web,guest |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest |
| | POST | password/reset | password.update | App\Http\Controllers\Auth\ResetPasswordController@reset | web,guest |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web,guest |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest |
| | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web,guest |
+--------+----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
回答by Asim Shahzad
回答by Lucas Bustamante
Routes for 5.5 LTS(Confirmed) / 5.6(Confirmed) / 5.7(?)
对于路由5.5 LTS(确认)/ 5.6(确认)/ 5.7(?)
Can someone confirm it works with 5.7?
有人可以确认它适用于 5.7 吗?
// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'Auth\RegisterController@register');
// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');
回答by raviolican
As I was struggling with the same problem I managed to find a good way to overridelaravel 5.5routes:
当我遇到同样的问题时,我设法找到了一种覆盖laravel 5.5路由的好方法:
The static function Auth::routes(); :
静态函数 Auth::routes(); :
public static function routes()
{
static::$app->make('router')->auth();
}
The auth() function is called here which creates auth routes:
auth() 函数在这里被调用,它创建了 auth 路由:
laravel/framework/src/Illuminate/Routing/Router.php
laravel/framework/src/Illuminate/Routing/Router.php
public function auth()
{
// 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('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');
// Password Reset Routes...
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
$this->post('password/reset', 'Auth\ResetPasswordController@reset');
}
You can copy&paste the body of the function right into your web.php and modify them as you wish.
您可以将函数的主体复制并粘贴到您的 web.php 中,并根据需要进行修改。
回答by Buraco
You can find all the login routes of Laravel 5.7. There is something new, e-mail verification. Related documentation is here.
你可以找到Laravel 5.7的所有登录路径。有一些新的东西,电子邮件验证。相关文档在这里。
If statements in the code block basically enables/disables auth features. By using helper, you can pass register
, reset
, verify
parameters to Auth::routes(['verify' => true]);
. So fix if
statements by using config()
or just use as you wish.
代码块中的 if 语句基本上启用/禁用身份验证功能。通过使用助手,您可以将register
, reset
,verify
参数传递给Auth::routes(['verify' => true]);
。因此,if
通过使用config()
或随意使用来修复语句。
Wrapping up here!
When you call Auth::routes()
, following routes will be registered.
到此结束!
当您拨打 时Auth::routes()
,将注册以下路线。
Route::get('login', 'LoginController@showLoginForm')->name('login');
Route::post('login', 'LoginController@login');
Route::post('logout', 'LoginController@logout')->name('logout');
// Registration Routes...
if (config('register'))
{
Route::get('register', 'RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'RegisterController@register');
}
// Password Reset Routes...
if (config('reset'))
{
Route::get('password/reset', 'ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'ResetPasswordController@reset')->name('password.update');
}
// Email Verification Routes...
if (config('verify'))
{
Route::get('email/verify', 'VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}', 'VerificationController@verify')->name('verification.verify');
Route::get('email/resend', 'VerificationController@resend')->name('verification.resend');
}
回答by Pankit Gami
Change this to :
将此更改为:
Route::get('/admin/login', ['as' => 'admin.login', 'uses' => 'App\Modules\Admin\Controllers\AdminUserController@loginAdminUser']);
Route::get('login', ['as' => 'login', 'uses' => 'App\Modules\Admin\Controllers\AdminUserController@loginAdminUser']);
name
function is the synonyms for as
key of array. So no need to add name
at the end.
name
函数是as
数组键的同义词。所以没有必要name
在最后添加。