Laravel:有些东西正在改变方法,它是啥?

Posted

技术标签:

【中文标题】Laravel:有些东西正在改变方法,它是啥?【英文标题】:Laravel: something is changing the method, what is it?Laravel:有些东西正在改变方法,它是什么? 【发布时间】:2021-03-25 04:25:20 【问题描述】:

我有一个简单的刀片形式 mith post 方法和 csrf 令牌:

<form name="login" action=" route('login.do') " method="post" autocomplete="off">
    @csrf
    <label>
        <span class="field icon-envelope">E-mail:</span>
        <input type="email" name="email" required/>
    </label>

    <label>
        <span class="field icon-unlock-alt">Password:</span>
        <input type="password" name="password_check"/>
    </label>

    <button class="gradient gradient-orange radius icon-sign-in" type="submit">Send</button>
</form>

以及routes/web.php中的路由:

Route::post('login', 'AuthController@login')->name('login.do');

当我提交表单时,我收到错误:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException

此路由不支持 GET 方法。支持的方法:POST。

如您所见,路线和表单都还可以,但有些东西搞砸了并更改了方法。它甚至不会到达控制器层。

一些信息:

-Laravel 8.12

-我没有定制的中间件

-htaccessconfig/cors 是默认的

-路线不以斜线结尾,也不重复

-每当我进行更改时,我都会清理缓存

-APP_URL以http开头,SESSION_SECURE_COOKIE因此设置为false

-APP_ENV 正在生产中

可能是什么?我读过它可能是服务器中的某些东西阻止了请求并更改了它的方法,所以我不确定错误是 laravel 还是服务器相关。

【问题讨论】:

是那个页面的错误信息吗?您可能会在登录后重定向吗? 您是否尝试过 dd() 检查请求的值是否达到了您的方法。 尝试一次通过重写你的路由这样 Route::post('/update',[PersonController::class, 'update'])->name('update'); 登录未完成。正如我所说,它甚至不会到达控制器层。 请分享更多详细信息 - 您如何提交表格?是否有任何 javascript 处理程序更改表单方法? 【参考方案1】:
public function login(Request $request)
    
   dd($request->all());
    

【讨论】:

请在您的答案中添加一些解释,以便其他人可以从中学习。我会假设控制器根本没有被调用 我试过这个 LOCAL 并得到:array:3 [▼ "_token" => "m3F6hRrodg5307ZIJfNnZGfKvjzBrxGIQ24fWil4" "email" => "admin@email.com.br" "password_check" => "senha" ] 但是当我在服务器中尝试它时,它直接进入错误消息。正如我所说,它甚至不会到达控制器层。 请分享您的 AuthController 的更多详细信息 code public function login(Request $request) $credentials = [ 'email' => $request->email, 'password' => $request->password_check ]; if(Auth::attempt($credentials)) return redirect()->route('admin.home'); return redirect()->back()->withInput()->withErrors(['Invalid email/password.']); code 但是控制器没有被调用。一旦提交表单并且应用程序进入该错误,错误就会发生。 试试这个,在@csrf下,加上这个@method('post');

以上是关于Laravel:有些东西正在改变方法,它是啥?的主要内容,如果未能解决你的问题,请参考以下文章

严格模式更改的规则是啥?

Laravel 4 - CSRF 令牌永远不会改变

Laravel 应用程序密钥 - 它是啥以及它是如何工作的?

Laravel 中的控制台路由是啥?它是如何工作的? [关闭]

Laravel,捕获访客 IP 的最佳方法是啥?

在 Laravel 5.4 中创建表单的最佳方法是啥?