如何更改 Laravel 5.2 更改登录路由?
Posted
技术标签:
【中文标题】如何更改 Laravel 5.2 更改登录路由?【英文标题】:How to change Laravel 5.2 change login route? 【发布时间】:2017-04-10 20:06:53 【问题描述】:您好,我使用的是 Laravel 5.2 版本。我通过 composer 安装了 laravel 项目。之后,我使用命令 "php artisan make:auth" 创建身份验证。创建身份验证路由后生成例如 "http://localhost:8000/login"。现在我不想要这条路线,我想设置不同的路线,例如 "http://localhost:8000/super/admin"。那么如何将 "http://localhost:8000/login" 更改为 "http://localhost:8000/super/admin"。当身份验证生成那个时间 /register 路由时,我想删除 "http://localhost:8000/register" 路由。请建议我如何做到这一点。 提前致谢。
【问题讨论】:
【参考方案1】:在App\Http\Controllers\Auth\LoginController
- 定义一个名为 showLoginForm() 的函数:
public function showLoginForm()
$view = property_exists($this, 'loginView')
? $this->loginView : 'auth.authenticate';
if (view()->exists($view))
return view($view);
return view('auth.login');
它覆盖了 trait Illuminate\Foundation\Auth\AuthenticatesUsers.
中定义的函数 showLoginForm
注意:在 Laravel 5.3 中,函数名称从 getLogin 更改为 showLoginForm。
详情请转到
Illuminate\Foundation\Auth\AuthenticatesUsers.
【讨论】:
【参考方案2】:在路由文件中,您必须自己注册路由,而不是使用默认的Route::auth()
。
我的建议是运行php artisan route:list
。这将向您显示默认路由及其各自的控制器(和方法)。然后,删除Route::auth()
并手动实现您想要的路由。
例如,如果您想更改为登录 URL,则必须将其定义为:
Route::get('super/admin', 'App\Http\Controllers\Auth\AuthController@showLoginForm');
对所有要替换的路由执行此操作。通过删除Route::auth()
,您将删除注册路由。
【讨论】:
如果我删除 Route::auth() 那么我必须创建自定义身份验证的所有项目? 不,只是引用现有的控制器。例如,所有Route::auth()
所做的就是为您声明Route::get('login', 'App\Http\Controllers\Auth\AuthController@showLoginForm');
。通过删除它并明确【参考方案3】:
按照这些简单的步骤进行
如果您的routes.php
中有Route::auth()
,请删除该行。
现在将以下行添加到您的routes.php
Route::get('super/admin', 'Auth\AuthController@getLogin')->name('auth.login.get');
Route::post('super/admin', 'Auth\AuthController@postLogin')->name('auth.login.post');
Route::get('super/admin/logout', 'Auth\AuthController@getLogout')->name('auth.logout.get');
然后转到login.blade.php
(很可能在resources->views->auth)
并将表单操作更改为 route('auth.login.post')
,像这样...
<form action=" route('auth.login.post') " method="post">
希望这能回答所有问题:)
【讨论】:
如果我在我的 routes.php 中删除 Route::auth() 那么我的所有控制器我的身份验证是否正常工作。删除 Route::auth() 后,我必须为我的项目创建自定义身份验证吗? @dhanashri 我也添加了注销路线。不,您不必使用自定义身份验证...输入php artisan make:auth
后制作的 AuthController 正在此处使用......您现在不需要任何东西。一切都应该按预期工作......注册链接也不会工作:)
@dhanashri 很高兴我能帮上忙 :)
在较新的 Laravel 版本中,它被重命名为 Auth::routes()以上是关于如何更改 Laravel 5.2 更改登录路由?的主要内容,如果未能解决你的问题,请参考以下文章