1

IIS Express で開発用にホストされている Azure サービスの Web ロールで、MVC 4 と ServiceStack を使用するプロジェクトがあります。CustomAuthenticationMvc サンプル プロジェクトのものとよく似たカスタム認証プロバイダーを使用しています。これは、Membership クラスを使用して認証し、Roles クラスを使用して役割を満たします。ServiceStack への API 呼び出しを行い、401 が返されたときにポップアップで認証するストレートな HTML/CSS/JS ページとしてページを開発することから始めました。これは、サービスを再構築するためにプロジェクトを停止して再起動した場合にのみ発生しました。このフォームで開発している間、静的ファイルを変更してページをリロードし、認証セッションを中断することなく変更を確認できました。これは、認証された API 呼び出しがページのリロード後も引き続き成功するという事実によって証明されています。

その後、開発がほぼ完了したら、HTML をそれを提供するだけのコントローラーを使用して CSHTML に移動し、フォーム認証を追加し、コントローラーに [Authorize] を追加し、アカウント コントローラーにコードを追加して、ユーザーがログインしたときに、また、CustomAuthenticationMvc のコードをガイドとして使用して、ServiceStack で認証します。また、認証されていない API 呼び出しを引き続き検出できるように、フォーム リダイレクトのハイジャック防止も追加しました。これを除いて、これはすべて正常に機能します。JS ファイルなどの静的ファイルを変更し、CSHTML を返すコントローラーのルートをリロードすると、正常にリロードされることもありますが、CSHTML がロードされることもありますが、API 呼び出しは401 になります。これは、フォーム認証チケットがまだ有効であることを示していますが、どういうわけか API 呼び出しは認証されていません。

要するに、MVC プロジェクトで JS ファイルを変更すると ServiceStack AuthSession が消えることがあるのはなぜですか?それは私が修正できるものですか?

4

0 に答える 0