生产中的TokenMismatchException

时间:2015-05-27 12:44:22

标签: php laravel laravel-5

我刚刚在服务器上运行了我的laravel应用程序。但是我在注册过程中遇到了错误。它说的是:

[2015-05-27 12:38:34] production.ERROR: exception 'Illuminate\Session\TokenMismatchException' in /var/www/vendor/compiled.php:2545

请帮忙。该代码适用于本地环境,但不适用于生产。

修改

            <div class="panel panel-default">
            <div class="panel-heading">Register</div>
            <div class="panel-body">
                @if (count($errors) > 0)
                    <div class="alert alert-danger">
                        <strong>Whoops!</strong> There were some problems with your input.<br><br>
                        <ul>
                            @foreach ($errors->all() as $error)
                                <li>{{ $error }}</li>
                            @endforeach
                        </ul>
                    </div>
                @endif

                <form class="form-horizontal" role="form" method="POST" action="{{ url('/auth/register') }}">
                    <input type="hidden" name="_token" value="{{ csrf_token() }}">

                    <div class="form-group">
                        <label class="col-md-4 control-label">Name</label>
                        <div class="col-md-6">
                            <input type="text" class="form-control" name="name" value="{{ old('name') }}">
                        </div>
                    </div>


                    <div class="form-group">
                        <label class="col-md-4 control-label">E-Mail Address</label>
                        <div class="col-md-6">
                            <input type="email" class="form-control" name="email" value="{{ old('email') }}">
                        </div>
                    </div>

                    <div class="form-group">
                        <label class="col-md-4 control-label">Password</label>
                        <div class="col-md-6">
                            <input type="password" class="form-control" name="password">
                        </div>
                    </div>

                    <div class="form-group">
                        <label class="col-md-4 control-label">Confirm Password</label>
                        <div class="col-md-6">
                            <input type="password" class="form-control" name="password_confirmation">
                        </div>
                    </div>

                    <div class="form-group">
                        <div class="col-md-6 col-md-offset-4">
                            <button type="submit" class="btn btn-primary" name="submit">
                                Register
                            </button>
                        </div>
                    </div>
                </form>
            </div>

这是我的postRegister的一部分,它是提供的。

public function postRegister(Request $request)
{
    $validator = $this->registrar->validator($request->all());

    if ($validator->fails())
    {
        $this->throwValidationException(
            $request, $validator
        );
    }

    $this->auth->login($this->registrar->create($request->all()));

    return redirect($this->redirectPath());
}

我的控制器即AuthController也是如此。除了路线甚至没有触及。它适用于本地,但不适用于生产。

2 个答案:

答案 0 :(得分:0)

由于 config / session.php中的安全配置,生产没有发现错误。

默认设置为&#34; false&#34;如果您在托管服务器上使用SSL,请更改&#39; secure&#39;从远程服务器上的session.php文件中的&#34; false&#34; &#34; true&#34;

Session.php文件

'secure' => true //false

注意:我没有测试过。

来源:https://laracasts.com/discuss/channels/laravel/tokenmismatchexception-in-verifycsrftokenphp-line-67-in-laravel-52?page=2

答案 1 :(得分:-2)

请尝试在表单中添加此内容 -

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

有关详细信息,请访问 - http://laravel.io/forum/01-30-2015-laravel5-tokenmismatchexception-in-verifycsrftoken