30

Azure Web サイトを運営しています。展開するたびに、変更のために全員がログアウトされmachineKeyます。

で を指定しmachineKeyましたweb.configが、これで問題は解決しませんでした。これは、Azure がmachineKey [1]を自動的に上書きするためだと思います。

ここで同様の質問をいくつか見つけましたが、回答はデッドリンクにリンクしています。

それで、解決策は何ですか?Azure へのデプロイに関係なく、ユーザーのログイン状態を維持する方法は確かにあります。

4

3 に答える 3

1

Azure が machineKey を書き換えている場合、それは Azure のインフラストラクチャの一部であるため、多くのことを行うことはできません。ただし、他の方法もあります。

FormsAuthentication をオーバーライドする

FormsAuthentication のソース コードを簡単に検索して独自のロジックを作成し、MachineKey を web.config またはデータベースに格納されている独自のキーに置き換えることができるため、これは難しくありません。

カスタム認証フィルター

最も簡単な方法は、フィルターを作成し、フィルターで Cookie を復号化してチェック、検証、暗号化することです。OnAuthorization メソッドでこれを実行し、IPrincipal の新しいインスタンスを作成し、復号化が成功した場合は IsAuthenticated を true に設定する必要があります。

OAuth

  1. OAuth を有効にして OAuthProvider を作成します。ただし、machineKey が機能する必要があるため、管理下にあるサーバーで OAuthProvider をホストする必要があります。
  2. サード パーティの OAuth を有効にします。Google、Facebook などで OAuth を有効にすると、ユーザーは OAuth プロバイダーにリダイレクトされ、自動的にログインし続け、新しいセッションが確立されるので簡単です。
于 2015-04-21T05:34:21.163 に答える
0

私は同じ問題を抱えていました。私の場合、VS13 で Azure への webdeploy ウィザードを使用していました。web.config で machinekey を設定し、展開された web.config で自動生成するように変更されるので、私は夢中になっていると思いました。これは、webdeploy スクリプト/設定にあるものです。私の解決策は、サーバー エクスプローラーを使用して VS13 内からライブの azure サイトを開き、web.config を編集して変更を保存することでした。これにより、提供されたキーで設定が保持され、すべて正常に機能します。

于 2015-07-11T18:01:43.530 に答える