Laravel 5.5登录和注册页面说:由于不活动,页面已过期.[TokenMismatchException]

bri*_*hen 9 php laravel laravel-5.5

我刚刚使用laravel installer创建了一个laravel版本5.5的新项目.并运行命令" php artisan make:auth ".为用户身份验证生成视图和控制器.还运行" php artisan migrate "以创建所需的表在访问登录页面和注册页面时,填写表单并提交.它显示"页面因不活动而过期.请刷新并重试.".但刷新页面没有任何帮助.在源代码中看到,导致异常的地方:

if ($e instanceof ModelNotFoundException) {
        $e = new NotFoundHttpException($e->getMessage(), $e);
    } elseif ($e instanceof AuthorizationException) {
        $e = new AccessDeniedHttpException($e->getMessage());
    } elseif ($e instanceof TokenMismatchException) {
        $e = new HttpException(419, $e->getMessage());
    }
Run Code Online (Sandbox Code Playgroud)

似乎"TokenMismatchException"导致了这个问题.什么时候发生?为什么?我只是创建这个新项目而没有做任何其他更改.希望你得到分.我使用php 7.1.9(laravel 5.5需要php> 7.0.0).并在开发环境中使用:php artisan serve服务项目

小智 27

我想你错过了csrf令牌.

别忘了用 {!! csrf_field() !!}


Man*_*ash 12

在我的情况下,我有相同的错误消息,然后认为我错过了添加 csrf_token

{{ csrf_field() }}
Run Code Online (Sandbox Code Playgroud)

或者没有表格助手,

<input type="hidden" name="_token" value="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,那么 -

刷新浏览器缓存,希望它能正常工作,谢谢.


stu*_*_pl 9

我在localhost:8000(php artisan serve)上遇到了同样的问题.也许这是巧合,但尝试" 干净的浏览器 ",除了你以前的开发使用.对我来说它有效.

似乎问题在于使用以前的Laravel版本开发的cookie,在同一个URL上.


Afr*_*mad 5

我遇到了同样的问题,这是因为我使用的是virtualhost,并且将以下变量设置为mydomain.com。在config / session.php文件中

'domain' => env('SESSION_DOMAIN', 'mydomain.com'),
Run Code Online (Sandbox Code Playgroud)

当我将其更改为null时,它开始工作

'domain' => env('SESSION_DOMAIN', 'null'),
Run Code Online (Sandbox Code Playgroud)

我不知道其背后的原因是什么,但是它现在运行良好。