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
なんでも受け付けるようになるので、別に認証の仕組みを作ったほうが安全だと思うがそれはまた別の話。