gpt4 book ai didi

php - Laravel 5 Auth Post Submit - VerifyCsrfToken.php 第 46 行中的 TokenMismatchException

转载 作者:IT王子 更新时间:2023-10-29 01:12:04 26 4
gpt4 key购买 nike

刚刚在 Laravel 5 中启动了一个新应用程序,但我在使用开箱即用的身份验证时遇到了一些问题...

我不断收到:VerifyCsrfToken.php 第 46 行中的 TokenMismatchException:在提交登录或注册表单时...

我可以在登录表单页面上看到隐藏表单字段中的 token 代码和此时的 session 是相同的......

作为测试,我也尝试过其他一些帖子建议注释掉//'App\Http\Middleware\VerifyCsrfToken',在app/Http/kernal.php中看看会发生什么。每次我提交表单时执行此操作后,我都会收到一条消息,指出重定向到:/auth/login 或/auth/register,具体取决于我来自哪里,但没有成功。

奇怪的是,当我第一次安装框架时,它正在工作。从那时起,我所做的就是运行一些迁移并设置我的一些模型和 Controller ,并为数据库植入一些用户数据。

更新:

在 VerifyCsrfToken.php 第 55 行的函数 tokensMatch() 中进一步研究这个问题,如果我:

var_dump($request->session()->token());

var_dump($request->input('_token'));

我可以看到这两个标记是不同的,但使用的形式是:

var_dump(Session::all());

{{{ csrf_token() }}}

它们是一样的。 Session token 在到达 VerifyCsrfToken.php 第 55 行的函数 tokensMatch() 之前发生了一些变化

我的堆栈轨迹如下:

in VerifyCsrfToken.php line 46
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 17
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 61
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in Kernel.php line 111
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 84
at Kernel->handle(object(Request)) in index.php line 53

最佳答案

我首先让它工作,删除该行:

'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken'

来自/app/Http/Resquests/Kernel.php。但是,这意味着 CSRF token check将被删除,这意味着您的网站将不会受到跨站点请求伪造的保护。

更新根据the documentation ,您应该通过将此代码段添加到您的代码中来将 CSRF token 添加到您的表单中:

<input type="hidden" name="_token" value="{{ csrf_token() }}">

我在移动应用程序的后端服务中使用了第一种方式,但我发现我可以在请求中发送发送 CSRF header 。

关于php - Laravel 5 Auth Post Submit - VerifyCsrfToken.php 第 46 行中的 TokenMismatchException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28875788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com