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を適切に設定する必要があります。
コメント