2012-01-02 5 views
1

私は約5ヶ月間働いているメンバーシップwesiteを持っていましたが、今日はパスワードの制限を緩和するために正規表現を変更しました。私はまだ新しいアカウントを作成してアクセスできますが、以前に登録したアカウントにアクセスすることはできません。ASP.NET 4メンバーシップマシンキー

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

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

+0

ちょうどアプリケーションIDは、メンバーシップ・テーブル内の新規ユーザーのために異なっていることに気づきました。これはエラーを引き起こす可能性がありますか?もしそうなら、どうすれば元のものに戻すことができますか? – Rob

答えて

1

あなたのコメントが私の最初の考えは、アプリケーションキーが変更されたということでした。このキーは、web.configファイル/のsystem.web /会員に格納されている:

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

このキーは、同じメンバシッププロバイダ(あなたのケースで例えばSystem.Web.Security.SqlMembershipProvider)を有する異なるアプリケーションがメンバーシップデータを格納する同じデータベースを利用することを可能にします。

データベースを照会するときにアプリケーション名を考慮しているため、一方のプロバイダは他方のプロバイダのユーザーを表示しません。その逆もあります。しかし、Usersテーブルを見ると、SqlMembershipProviderはUsersテーブルのGuidを使用しているため、直ちにリレーションに気付かないことがあります。しかし、それはアプリケーションテーブルの外部キーで、アプリケーション名を見つけることができます。

も参照してください:Always set the "applicationName" property when configuring ASP.NET 2.0 Membership and other Providers

0

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

(。*私のアプリは、それが以前に設定されたCookieを読み取ることができないというアプリを引き起こし、したがって、各ホップでのマシンのキーを変更する大規模な仮想化サーバーファーム内のサーバー間でさまよっていた)

+2

それはマシンキーとは何一つ関係ないことが分かりました。私はサイトのコピーを作成してコピーをアップロードしたので、新しいメンバーは自分のアカウントにアクセスできましたが、以前のメンバーはコピーできませんでした。私は両方のアプリケーション名をweb.configファイルに追加することでこれを修正しました。 – Rob