次の設定のアプリケーションがあります。
Laravel
ホスト:appname.local:8000
環境変数:
角度
ホスト:appname.local:4200
現時点で機能するもの:
機能しないもの:
次のミドルウェアauth:sanctumによって保護されているルートへの後続の要求は、すべて認証されていない応答になります。 HTTP要求がコントローラーに到達することはありません。
しかし、Cookieが送信されていることを開発者のコンソールで確認できます。だから私はなぜSanctumが認証を取得していないのか分かりません
私はいくつかのチュートリアルを実行しましたが、Laravelの認証ミドルウェアが、ユーザーをすでに認証したことを認識できない理由を理解できていないようです。
私が間違っている可能性があることを誰かが知っていますか?
エデンは正しいと思います。私は無関係な理由でこの質問にアクセスしていますが、サブドメインをサポートするために、SESSION_DOMAIN
環境変数にドットを使用できますが、SANCTUM_STATEFUL_DOMAINS
は使用できません。
ローカルと本番の両方で有効な環境設定は次のとおりです。
./。env
# localhost
SANCTUM_STATEFUL_DOMAINS="angular-site.test"
SESSION_DOMAIN=".angular-site.test"
# production
# SANCTUM_STATEFUL_DOMAINS="hockeysticks.net"
# SESSION_DOMAIN=".hockeysticks.net"
これにより、Cookieはauth.hockeysticks.net
、product.hockeysticks.net
、service.hockeysticks.net
、api.hockeysticks.net
などの複数のサブドメインで機能します。
人がSESSION_DOMAIN
にドットを入れても、サブドメインがない場合でもCookieは機能しますが、その場合は省略した方が理論的に安全です。
Laravelの開発者であるMohamed SaidによるSanctumについてのビデオはこちらです https://www.youtube.com/watch?v=Kd3hcrxtTHA 。その中で、彼は認証ロジックをウォークスルーします。
同じ問題がありました。リクエストがポート番号に設定されていないアプリから行われた場合、sanctum SPA APIは正常に機能することがわかりました。
フロントエンドアプリをホストできます
appname.local
appname.local:4200の代わり