TokenMismatchException: в строке 33 VerifyCsrfToken.php с использованием Laravel - PullRequest
1 голос
/ 23 сентября 2019

Несмотря на то, что я искал в Stack OverFlow и пробовал все, что предлагалось в аналогичных вопросах, я все еще изо всех сил пытаюсь пройти это исключение.

Я взял этот сайт на себя и получил задание запустить его на AWS,На данный момент я не делаю ничего авантюрного и просто скопировал всю партию на виртуальную машину Linux AWS, которая работает под управлением Apache, PHP, beanstalk, Laravel и MariaDB.

Сайт был настроен для использованияБД как Session и Cache Driver.Я попытался изменить это значение на file и cookie, но это не имеет значения.

Я убедился, что key:generate был запущен и сохранен в файле .env.Я перепробовал все разные версии вывода csrf_token в форме, но безрезультатно.

Извините, что опубликовал еще одну проблему, связанную с этой же проблемой, но надеялся, что есть и другие идеи, которые помогут мне.

Фрагмент из моей формы ....

<form method="post" accept-charset="utf-8" autocomplete="off">
    <meta name="csrf-token" content="{{ csrf_token() }}">
    <div class="form-group">
        .......
</form>

Следуя совету @ Script47, я исправил свою форму как таковую, что, к сожалению, не работает:

<form method="post" accept-charset="utf-8" autocomplete="off">
    {!! csrf_field() !!}
    <div class="form-group">
        .......
</form>

Другие фрагменты:

Маршрут - web.php

Route::any('/signup', ['as' => 'jobseeker.signup', 'uses' => 'Jobseeker\JobseekerController@signup']);

Контроллер

        if ($this->request->isMethod('POST'))
        {
            $rules = [
                'email'    => 'email|required|unique:jobseekers,email',
                'password' => 'required|min:6|confirmed',
            ];

            $validation_messages = ['email.unique' => trans('messages.auth.email.unique.validation', ['login' => route('jobseeker.login'), 'forgot' => route('jobseeker.forgot')])];
            $validation = Validator::make($this->request->all(), $rules, $validation_messages);

            if ($validation->passes())
            {
                Unsubscriber::remove($this->request->get('email'));
                $jobseeker = Jobseeker::register($this->request->get('email'), $this->request->get('password'));
                $jobseeker->sendRegistrationNotification();
                $this->auth->login($jobseeker);
                return redirect()->route('account.details');
            }

Сумасшедшая вещь,это работает в живой среде.Но не работает, так как я взял копию кода и переустановил его на AWS.

Ответы [ 2 ]

3 голосов
/ 23 сентября 2019

Вы делаете это неправильно, в соответствии с документацией :

Каждый раз, когда вы определяете HTML-форму в своем приложении, вы должны включить скрытое поле токена CSRF всформируйте так, чтобы промежуточное программное обеспечение защиты CSRF могло проверить запрос.Вы можете использовать помощник csrf_field для генерации поля токена:

Так что оно должно быть:

{{ csrf_field() }}

в вашей форме.Метатег, как правило, предназначен для запросов AJAX для ссылки на токен.

0 голосов
/ 23 сентября 2019

прямо под тегом формы определите его:)

 @csrf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...