【Laravel Sanctum】ステートフルドメインを全許可に設定するには?

laravel Laravel

Laravel Sanctamでステートフルドメイン(SANCTUM_STATEFUL_DOMAINS)の判定を一時的に止め、すべて許可する方法を紹介します。

スポンサーリンク

ステートフルドメインの判定を止めるには?

vendor\laravel\sanctum\src\Http\Middleware\EnsureFrontendRequestsAreStateful.phpを編集します。

fromFrontend関数がつねにtrueを返すようにします。

    /**
     * Determine if the given request is from the first-party application frontend.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return bool
     */
    public static function fromFrontend($request)
    {
        $domain = $request->headers->get('referer') ?: $request->headers->get('origin');

        if (is_null($domain)) {
            return false;
        }

        $domain = Str::replaceFirst('https://', '', $domain);
        $domain = Str::replaceFirst('http://', '', $domain);
        $domain = Str::endsWith($domain, '/') ? $domain : "{$domain}/";

        $stateful = array_filter(config('sanctum.stateful', []));

        return true;//つねにtrueを返すと全許可になる
        return Str::is(Collection::make($stateful)->map(function ($uri) {
            return trim($uri).'/*';
        })->all(), $domain);
    }

もちろん、姑息的な方法ですので、最終的にはSANCTUM_STATEFUL_DOMAINSを適切に設定する必要があります。

コメント

タイトルとURLをコピーしました