如何在 Laravel 登录中阻止 GET 方法?

Posted

技术标签:

【中文标题】如何在 Laravel 登录中阻止 GET 方法?【英文标题】:How to block GET method in Laravel Login? 【发布时间】:2019-07-08 03:01:49 【问题描述】:

Laravel 登录应该只允许 POST 方法,但是在安全测试时发现 POST 方法可以替换为 GET 方法,黑客可以获取登录信息。 Laravel 默认登录有这些路由

    $this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
    $this->post('login', 'Auth\LoginController@login');

有什么方法可以禁用 GET 方法而只允许 POST 方法?

【问题讨论】:

这个GET方法显示login表单,请详细说明问题 【参考方案1】:

打开 vendor/laravel/framework/src/Illuminate/Routing/Router.php 更改这行代码:

public function auth()
     $this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
     ...........
     ...........
     

只需根据您的意愿更改网址:

$this->get('url_as_your_wish', 'Auth\LoginController@showLoginForm')->name('login');

现在您可以使用您的网址进入登录页面。

【讨论】:

以上是关于如何在 Laravel 登录中阻止 GET 方法?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5如何通过控制器的登录方法从url获取参数

如何在 Laravel 中的 Vue 组件的登录页面上显示用户被禁止的消息

在AuthController中覆盖laravel的5.2身份验证方法

Laravel 5.3 Auth 阻止用户

在 Laravel 8 中阻止 http 访问

Laravel - 注销特定用户