0

数か月間 Azure Web サイトを使用してきましたが、SSL の理由からクラウド サービスに移行することにしました。プロジェクトでいくつかの Web ロールが必要になる可能性があるため、セッション管理はステートレスである必要があります。

これは、プロジェクトでユーザー データを処理する方法です。ユーザー関連のデータが必要な場合は、経由でユーザー名を取得しますHttpContext.Current.User.Identity.Name。この情報を使用して、データベースにクエリを実行し、ユーザーに関する情報を取得します。

これは正しい方法ですか?HttpContext.Current.User私はいくつかの調査を行いましたが、どこから来たのかについて本当に明確な情報を見つけることができませんでした.

これまでのところ、これは私が理解していることです。ユーザーは、ユーザーの PC に Cookie を作成するフォーム認証で認証します。サーバーがユーザーによって再度要求されると、サーバーは Cookie 情報をチェックし、それを使用して HttpContext オブジェクトを埋めます。他の Web ロールの 1 つが次回リクエストを受け取った場合、その Cookie を使用して HttpContext を埋めることができますか? (これはすべて間違っている可能性があります。これは、ドキュメントやウェブ上の他の回答から理解していることです)

それが私が基本的に理解しようとしていることです。私の問題を十分に明確に説明したことを願っています。不明な場合はお知らせください。

4

2 に答える 2

2

複数のWebロールで実行されているAzureアプリでHttpContext.Current.User.Identityを使用しており、SessionStateは問題なく無効になっています。クッキーを使用するように設定しました。

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogIn" cookieless="UseCookies" timeout="2880" />
</authentication>
于 2013-01-28T22:39:59.800 に答える
2

あなたの理解は正しいと思います。FormAuthentication を使用すると、ログインすると Cookie が生成され、ユーザー情報とトークンのようなものが暗号化されます。次に、別のページを要求すると、ブラウザーはこの Cookie をサーバーに送信し、ASP.NET は Cookie を復号化し、検証して、サーバー側のインスタンスの数に関係なく、ユーザー情報を HttpContext.Current.User に入力します。したがって、マルチインスタンスの Web ロールで HttpContext.Current.User を使用するのは安全だと思います。

于 2013-01-29T01:59:29.833 に答える