1

私は asp.net 4 メンバーシップ Web サイトを約 5 か月間運用してきましたが、今日は正規表現を変更してパスワードの制限を緩和しました。新しいアカウントを作成してアクセスすることはできますが、以前に登録したアカウントにはアクセスできなくなりました。

データベースをチェックしたところ、それらがすべて残っていることを確認しました。私の最初の考えは、間違ったパスワードでした。パスワードを知っている 2 つのアカウントを確認しましたが、両方ともアクセスできません。パスワード回復オプションを使用しようとしましたが、ユーザー名を入力すると、ユーザーが存在しないと言われました。

データベースをチェックしてメンバーシップ テーブルとプロファイル テーブルの両方を参照すると、古いユーザーと新しいユーザー、正規表現の変更前と変更後のすべてが同じテーブルに含まれています。これは、私が経験したことのない最終的な発見につながります。新しいユーザーを作成しているが、古いユーザーを解読できない新しいマシン キーはありますか? もしそうなら、どうすればこれを修正できますか?

4

2 に答える 2

1

あなたのコメントのように、私の最初の考えは、アプリケーション キーが変更されたということでした。このキーは web.config/system.web/membership に保存されます。

<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider"
      ...
      applicationName="YOUR_KEY_HERE" />
  </providers>
</membership>

このキーにより、同じメンバーシップ プロバイダー (たとえば、あなたの場合) を持つさまざまなアプリケーションが、System.Web.Security.SqlMembershipProviderメンバーシップ データを格納するために同じデータベースを利用できるようになります。

データベースのクエリ時にアプリケーション名が考慮されるため、一方のプロバイダーは他方のプロバイダーのユーザーを認識しません。また、その逆も同様です。しかし、Users テーブルを見ても、すぐには関係に気付かないかもしれませんSqlMembershipProvider。これは、Users テーブルで Guid が使用されているためです。ただし、これは Applications テーブルへの外部キーであり、アプリケーション名を見つけることができます。

関連項目: ASP.NET 2.0 メンバーシップおよびその他のプロバイダーを構成するときは、常に "applicationName" プロパティを設定する

于 2012-01-02T21:04:25.563 に答える
0

私の問題は少し異なりました*が、web.configで自分のマシンキーを指定しました。詳細はこちらをご覧ください: http://msdn.microsoft.com/en-us/library/ff649308.aspx

(* 私のアプリは、大規模な仮想化サーバー ファーム内のサーバーからサーバーへと移動していたため、各ホップでマシン キーを変更すると、アプリは以前に設定した Cookie を読み取ることができませんでした。)

于 2012-01-02T20:42:09.577 に答える