Help us understand the problem. What is going on with this article?

Laravel5でCSRFチェックを外す

More than 1 year has passed since last update.

Laravelはセキュリティも万全なのでPOSTのformにはCSRF対策用のトークンが自動的に埋め込まれる。
これによって不正なPOSTリクエストにはTokenMismatchExceptionを出して処理を止めるようになっている。
しかし、ときにはこれが問題となることもある。
例えばAPIを作って外部からのPOSTリクエストを受け付けようとしたとき、送られてくるフォームデータにCSRFトークンは含まれていない。
なのでTokenMismatchExceptionとなって正常な処理が実行されない。
それだといけないので敢えてCSRFのチェックを外す場合、Laravelではどうするか。
それはミドルウェアのVerifyCsrfTokenに除外するURIを追加すればよい。

app/Http/Middleware/VerifyCsrfToken.php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        '除外するURI',
    ];
}

これでOK:thumbsup_tone1:
なんでも受け付けるようになるので、別に認証の仕組みを作ったほうが安全だと思うがそれはまた別の話。

kiyc
Webエンジニア。インフラもバックエンドもフロントエンドも書いています。 普段書いているのはPHP(Laravel)、JavaScript(Vue.js)です。
prime-order
組織と業務に変革をもたらす新しいカタチのシステム開発サービス
https://prime-order.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away