Laravel 5.4禁用注册路由

47

我正在尝试禁用在Laravel 5.4中运行的应用程序上的注册路由。

在我的路由文件中,我只有:

Auth::routes();

有没有办法禁用注册路由?


4
在当前的 Laravel 5.7.5 版本中,有一个选项可以实现这个功能。Auth::routes(['register' => false]); - Zohaib
请参见 https://github.com/laravel/framework/blob/5.7/src/Illuminate/Routing/Router.php#L1152 的代码。 - Zohaib
13个回答

0
请将以下两个方法添加到 app\Http\Controllers\Auth\RegisterController.php 文件中。
public function showRegistrationForm(){
    return redirect('login');
}

public function register(){

}

-4

是的,有一种方法

Auth::routes();

从你的routes目录中的web.php文件中删除掉这个远程路由。
这个路由用来控制注册功能。

给那些给这个答案点踩的人说一声,它并不完全错误,只是有一半是正确的。 - Salal Aslam
1
如果你这样做,你也会禁用登录方法,所以这个答案是错误的! - user2519032
实际上,这只是一半正确。根据文档,Auth::routes();是一组路由的快捷方式。如果您删除Auth::routes();,则可以单独放入您实际想要的任何路由(例如登录)。我认为这是不言而喻的,因为文档已经涵盖了这一点 - 显然我错了。这个答案在技术上是正确的和正确的。我不知道为什么人们仍然对此进行投票...它实际上就是被接受答案的一半。 - Hanny

-5

更改路由:

vendor\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');
}

9
修改位于供应商文件夹中的任何文件都是最糟糕的想法。 - Salal Aslam
3
这是一个糟糕的想法,因为下一个 Laravel 更新将覆盖编辑过的文件。因此你的更改会丢失。而且这样做会使你的代码难以跟踪。另一个开发人员可能不会想要修改这个文件,因此从未在其中寻找任何更改。 - geeves

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接