2

クライアントサイドに角2の.NETコアWeb APIアプリケーションがあります。 Startup.csで次のオプションを持つ
Iセットアップ.NETのコアアイデンティティ:.NET Core Identityは静的ファイルの認証Cookieをリフレッシュせず、500のエラーをスローする

options.Password.RequiredLength = 5;            
options.Password.RequireDigit = false; 
options.Password.RequireLowercase = false; 
options.Password.RequireUppercase = false; 
options.Password.RequireNonAlphanumeric = false; 
options.SecurityStampValidationInterval = TimeSpan.FromMinutes(1); 
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5); 
options.Lockout.MaxFailedAccessAttempts = 100; 
options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(14); 
options.Cookies.ApplicationCookie.LoginPath = "/api/signin/signin"; 
options.Cookies.ApplicationCookie.LogoutPath = "/api/signin/signout"; 
options.User.RequireUniqueEmail = false; 

ので、

  1. ユーザーがログインしている - 認証クッキーが設定されています。

  2. 60秒後に - API/*エンドポイントへの呼び出しは、新しい値にこのクッキーを更新..呼び出しが動作するよう

  3. しかしファイルはクッキーを更新しないHTML/JSへの呼び出し彼らは今セッションに結び付けられていないおそらく以前のクッキーを使用し続けます。それは何かできないのでというエラーが発生することを意味します。

  4. はどのAPI/*エンドポイントは、クッキーを更新し、HTML/JSファイルが再び動作ロード。

つまり、短く言えば、認証Cookieがすべての静的コンテンツに対してリフレッシュされていないことが原因です。また、ユーザーがログアウトしたときにクッキーがなくても正常に動作します。

どうすれば修正できますか?前もって感謝します。

答えて

1

ドキュメントセクションIntroduction to working with static files in ASP.NET Coreによれば:

静的ファイルモジュールは、ない権限チェックを提供しません。

(同じ記事から)、このためのソリューション:wwwrootの外

  • ストアそれらと静的ファイルミドルウェア
  • にアクセス可能な任意のディレクトリには、コントローラのアクションを介してそれらをサーブ、承認が適用されるFileResultを返します。

基本的には、セッションを更新するか、静的ファイル用のダミーコントローラを作成するために、常にAPIのリクエストを行う必要があります。

+0

私は理解できません、なぜ組み込みのフォルダ "wwwroot"が必要ですか?権限のないアプリの場合私は、静的ファイルは常にクッキーやその他のものを変更することなく動作したい。 –

+0

これは、ファイル用の組み込みフォルダです。 ASP.NETチームは、デフォルトで静的ファイルが承認された要求を必要としないという決定を下しました。 – VMAtm

+0

さて、なぜ静的ファイルは認証で動作しないのですか? Cookieが変更されても静的ファイルにアクセスするのではなく、500エラーが表示されるのはなぜですか? –

関連する問題