web-dev-qa-db-ja.com

Laravel 5.5ログインおよび登録ページは次のように述べています。ページは非アクティブのため期限切れです。[TokenMismatchException]

laravelバージョン5.5の新しいプロジェクトをlaravelインストーラーで作成しました。コマンドを実行します "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());
    }

「TokenMismatchException」がこの問題を引き起こしているようです。いつこれが起こりましたか?そして、なぜですか?この新しいプロジェクトを作成しただけで、他の変更は行いませんでした。あなたがポイントを得たことを願っています。私はphp 7.1.9を使用します(laravel 5.5にはphp> 7.0.0が必要です)そして開発環境でプロジェクトを提供します:php artisan serve

9
brian.shen

localhost:8000php artisan serve)でも同じ問題が発生しました。偶然かもしれませんが、以前の開発で使用したものとは別の "clean browser"を試してください。私にとってはうまくいきました。

問題は、以前のLaravelバージョン、同じURLでの開発からのCookieにあるようです。

9
studiojasper_pl

あなたはcsrfトークンを逃したと思います。

{!! csrf_field() !!}の使用を忘れないでください

27
Kokil

私の場合、同じエラーメッセージが表示され、csrf_token

{{ csrf_field() }}

または、フォームヘルパーがなければ、

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

それでもうまくいかない場合は、

ブラウザのキャッシュを更新そしてうまくいけば、うまくいきます。

12

私は同じ問題を抱えていました。それは、仮想ホストを使用していて、mydomain.comの変数の下に設定したためです。 config/session.phpファイル内

'domain' => env('SESSION_DOMAIN', 'mydomain.com'),

Nullに変更すると動作し始めました

'domain' => env('SESSION_DOMAIN', 'null'),

その背後にある理由はわかりませんが、今はうまく機能しています。

5
Afraz Ahmad

ストレージまたはブートストラップ/キャッシュのいずれか、または両方のアクセス許可設定のようです。

Cloudwaysサーバーを使用しています。 [アプリケーションの設定]でサーバーのアクセス許可をリセットしましたが、現在は機能しています。私のローカル開発サーバーでは、ストレージにchmod 777を設定することと同等でした。以前に755を使用したことがあり、エラーが続きました。

1
Dylan Glockler

Csrfトークンを追加

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

この問題は主に、フォームにcsrfトークンがないために発生します。 csrfトークンの検証中に失敗するため、このページが表示されます。 Laravelは通常、すべてのフォームでcsrfトークンを必要とします。フォーム内にこれを追加するだけでcsrfトークンを追加できます。

 {{ csrf_field() }}

これを行う別の方法は、verifycsrftokenミドルウェアでルートを除外することです。

ミドルウェアに保護されたフィールドをルート名とともに追加するだけです。

protected $except=[
                    '1st route',
                    '2nd route',
                    .
                    .
                  ];

これは動作するはずです。

0
Darshan

この問題もありました!以下によって解決しました:

  1. ブラウザーセッションのストレージとCookieをクリアします。
  2. ランニング php artisan cache:clear
  3. storage/framework/sessionsフォルダは空でしたが、.gitignore
  4. 開発環境を再起動します。
0
Doug Black

新しいプロジェクトlocalhostを作成した場合、config/session行を表示する必要があります:166 if 'secure' => true、edit 'secure' => false少し英語を知って、希望があなたを助けることができる

0
Scott

csrf_tokenメタタグ内。

<meta name="csrf-token" content="{{ csrf_token() }}">
0
Raza Mehdi

これと同じ問題がありました。 vagrant reload --provision私のために働いた

0
mark edosa

私は自分のAPIの投稿リクエストをテストするだけで、同じ問題に遭遇しました。ミドルウェアVerifyCsrfTokenの_$except_配列にルートを追加することで解決しました。つまり、_app/Http/Middleware/VerifyCsrfToken_に移動して追加します。

_protected $except = [
        'your/route'
];
_

ただし、リクエストが何らかのフロントエンドプラットフォームまたはビューからのものである場合は、リクエストを送信するフォームに{{ csrf_field() }}を追加することをお勧めします。

0
Allan Mwesigwa

皆さんに適用したいグループパスについては、この方法を使用してください。これは私の5.5幼生バージョンです。スターを使用=> app/Http/Middleware/VerifyCsrfTokenに移動して追加

protected $except = [
    '/user/*'
];

これは私のユーザーのパスでもあります

Route::group(['prefix' => 'user', 'namespace' => 'User', 'as' => 'user.'] , function (){
0
Ali Najafi