如何更改 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 更改登录路由?的主要内容,如果未能解决你的问题,请参考以下文章

更改 Laravel 中的默认登录路由

Laravel 5.2 更改用户密码功能

如何更改默认的Laravel Auth登录视图

如何更改登录路由名称

Laravel 5.2 - 经过身份验证的用户更改密码 - 更新后的密码匹配问题

在 laravel 5.2 中禁用特定路由的 Web 中间件