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
-我没有定制的中间件
-htaccess
和 config/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 应用程序密钥 - 它是啥以及它是如何工作的?