2009-08-18 3 views
4

私のニーズを満たしていないので、asp.netメンバーシップのものをたくさん書き直す必要がありました。私のカスタム検証方法では、失敗した場合にパスワードをチェックします。私はaspnet_membership maxInvalidPasswordAttempts列を取得し、1を追加します。web.configからmaxInvalidPasswordAttemptsを取得するにはどうすればよいですか?

私のweb.configでは、これを10に設定しました。だから、web.configの値を取得し、その値と比較したいと思います。これどうやってするの?

また、私はこの文をif文で比較すると思いますが、私はユーザをロックアウトしますか?以下に示すように

+0

私は確かにMembershipProviderのようにValidateUser()メソッドをチェックインします。 http://msdn.microsoft.com/en-us/library/system.web.security.membershipprovider.validateuser.aspx – CmdrTallen

答えて

2

あなたのプロバイダのinitializeメソッドでweb.configファイルから設定値を取得する必要があります:アプリケーションで

public override void Initialize(string name, NameValueCollection config) 
    { 
     if (config == null) 
     throw new ArgumentNullException("config"); 

     // Initialize the abstract base class. 
     base.Initialize(name, config); 

     pApplicationName   = GetConfigValue(config["applicationName"], 
             System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath); 
     pMaxInvalidPasswordAttempts = Convert.ToInt32(GetConfigValue(config["maxInvalidPasswordAttempts"], "5")); 
     // ... 

は、あなたがMembership.MaxInvalidPasswordAttmptsとしてそれを参照します。

full implementation of a custom MembershipProvider on MSDNがあります。これを例として、数時間以内にプロバイダを実装することができました。

1

アプリケーションからは、MembershipクラスのProvidersコレクションを通じて、アプリケーションに関連付けられているすべてのプロバイダにアクセスできます。次に、興味のある値のプロパティを使用してください。

Membership.Providers["ProviderName"].MaxInvalidPasswordAttempts 

または、次の方法でデフォルトプロバイダを取得できます。

Membership.Provider.MaxInvalidPasswordAttempts 

メンバシップはSystem.Web.Security名前空間にあります。

もう1つのアプローチは、おそらくあなた自身のMembershipProviderを書くことです。どのようなカスタマイズを行うかに応じて、独自のプロバイダですべてのカスタム認証ロジックを処理すると、コントローラはよりクリーンになります。

+0

hmm私は自分のカスタムメンバーシッププロバイダを作るべき理由はまだ分かりません。私はいくつかのものを周りのものを変更しているので、私はちょうどメンバーシップのテーブルをトリミングしていないだけで、自分のソリューションの役割を並べ替えることができますか?基本的にメンバーシップのすべてをオーバーライドしなければならないのは、自分のプロバイダを作って、必要なすべてのデータを持って自分のテーブルを作って、私に与えられたものに限定する必要があるときです。私はメンバーシップのようなものが大好きですが、独自のカスタムプロバイダを作ることに価値があるとは思わないカスタマイズをたくさんしているようです。あなた自身のものを作ってくれるかもしれません。 – chobo2

+0

または何かが不足しています。だから、彼らはweb.configからそれを得るのは簡単な方法ではありませんか? – chobo2

+0

私は今あなたの問題をより良く理解していると思います。あなたはプロバイダを書いたり、MSプロバイダをラップすることさえせず、あなた自身が書いただけです。その場合は、私の答えを無視してください。 カスタムメンバーシッププロバイダを作成することは、依然として有効です。これは、Visual Studioの[Projects]メニューから起動したASP.NET設定アプリケーションで動作します。彼らはまた、他のユーザーがそこにあるすべての残りのものと一貫した方法であなたのプロバイダを使用できるようにします。 実際にスリム化された機能セットがある場合は、メソッドの25%〜50%を実装するだけで済みます。 – Chuck

関連する問題