【问题标题】:TokenMismatchException in VerifyCsrfToken.php LaravelVerifyCsrfToken.php Laravel 中的 TokenMismatchException
【发布时间】:2016-08-27 13:08:58
【问题描述】:

我在 Localhost 上有这个表单,但是当我上传到我的共享主机时,它们会抛出 VerifyCsrfToken.php 第 67 行

代码如下:

<form class="form-horizontal" role="form" method="POST" action="{{ url('/login') }}">
    {{ csrf_field() }}

    <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
        <label for="email" class="col-md-4 control-label">E-Mail Address</label>

        <div class="col-md-6">
            <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}">

            @if ($errors->has('email'))
                <span class="help-block">
                    <strong>{{ $errors->first('email') }}</strong>
                </span>
            @endif
        </div>
    </div>

    <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
        <label for="password" class="col-md-4 control-label">Password</label>

        <div class="col-md-6">
            <input id="password" type="password" class="form-control" name="password">

            @if ($errors->has('password'))
                <span class="help-block">
                    <strong>{{ $errors->first('password') }}</strong>
                </span>
            @endif
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-6 col-md-offset-4">
            <div class="checkbox">
                <label>
                    <input type="checkbox" name="remember"> Remember Me
                </label>
            </div>
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-6 col-md-offset-4">
            <button type="submit" class="btn btn-primary">
                <i class="fa fa-btn fa-sign-in"></i> Login
            </button>

            <a class="btn btn-link" href="{{ url('/password/reset') }}">Forgot Your Password?</a>

            <a href="{{ url('/auth/facebook') }}">FB Login</a>

        </div>
    </div>
</form>

我在我的头标签中添加了这个:&lt;meta name="csrf-token" content="{{ csrf_token() }}" /&gt;,但它不起作用。令牌没问题,当我使用 Google Chrome Inspector 检查时出现在表单上。如果有人可以提供帮助,我真的被困在这里。

【问题讨论】:

  • 你可以试试这两个命令php artisan clear:cache php artisan route:cache
  • 如果你自己写了VerifyCsrfToken.php,请给我们看代码。

标签: php laravel laravel-5.2


【解决方案1】:

检查您的会话目录以获得正确的权限,这可能会有所帮助。

rm -f {your_web_app}/storage/framework/sessions/*

【讨论】:

    【解决方案2】:

    您在会话存储方面确实存在问题

    解决方案 1:使用数据库会话驱动程序而不是文件会话驱动程序

    - 在 .环境

    SESSION_DRIVER=database
    

    - 运行命令

    php artisan session:table
    

    - 然后

    php artisan migrate
    

    再次测试

    解决方案 2:继续使用文件会话驱动程序。确保您对 storage 文件夹具有写入权限。试试

    chmod 755 -R storage
    

    【讨论】:

    • 嗨@KmasterYC,我没有控制台访问权限。它的共享主机。我去本地主机上试试。谢谢
    • 抱歉。我不知道其他的
    【解决方案3】:

    我正在使用这种方法。

    <input type="hidden" name="_token" value="{{ session()->getToken() }}">
    

    在你看来刀片。

    【讨论】:

    • 把这一行放一次。在&lt;form class="form-horizontal" role="form" method="POST" action="{{ url('/login') }}"&gt; 下方,我认为没有必要在您的表单中使用`{{ csrf_field() }}`。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2016-12-23
    • 2017-02-21
    • 2017-02-23
    • 2016-07-27
    相关资源
    最近更新 更多