2012-01-10 6 views
0

createUser()をオーバーライドする方法パスワードチェックが失敗したときにカスタムエラーメッセージを表示するメンバーシップメソッド??
私は、新しいユーザーを作成するためのウィザードのようなインターフェイスを提供するWebサイト管理ツールを使用しました。

createUser()をオーバーライドする方法カスタムエラーメッセージを表示するASP .NETメンバーシップメソッド?

<membership defaultProvider="MyMembershipProvider"> 
     <providers> 
      <clear /> 
      <add name="MyMembershipProvider" type="BlueDDApp.Controllers.MyMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" minRequiredPasswordLength="8" minRequiredNonalphanumericCharacters="0" passwordStrengthRegularExpression="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!%,.;:])|(?=.*[a-z])(?=.*[0-9])(?=.*[!%,.;:])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!%,.;:])$" passwordAttemptWindow="10" applicationName="/" /> 
     </providers> 
    </membership> 



カスタムメンバーシップクラス:


Web.Configファイルを(このツールを起動するには、Microsoft Visual StudioでWebサイト]メニューの[ASP.NETの構成]をクリックします): :

public class MyMembershipProvider : SqlMembershipProvider 
{ 
    public MyMembershipProvider() 
    { 
     //Membership.ValidatingPassword += new MembershipValidatePasswordEventHandler(OnValidatePassword); 
     ValidatingPassword += ValidatePassword; 

    } 
    /* public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status) 
    { 
     ValidatingPassword += ValidatePassword; 

     return base.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status); 
    }*/ 
    void ValidatePassword(object sender, ValidatePasswordEventArgs e) 
    { 
     Regex check = new Regex("^(?i)(?!.*" + e.UserName + ").*$"); 
     if (!check.IsMatch(e.Password)) 
     { 
      e.FailureInformation = new HttpException("blah blah"); 
      e.Cancel = true; 

     } 

    } 
} 
+0

_Webサイト管理ツール_が関連しているなぜあなたはカスタムのユーザー管理を提供する場合、カスタムエラーメッセージのみが理にかなっているので、私は理解していません。 –

+0

うーん、それを生産的に使うことは決して考えなかった。しかし、ここを見てくださいhttp://www.4guysfromrolla.com/articles/052307-1.aspxとここにhttp://www.4guysfromrolla.com/articles/053007-1.aspx。たぶん、カスタムWebサイト管理ツールを公開することができます。 –

+0

Okティム私はそれがある意味があると思う。 – RollerCosta

答えて

0

asp:CreateUserWizardコントロールを使用している場合(あなたのweb.configのメンバシッププロバイダに接続します)、

このコントロールをクリックすると、上部に表示されます右隅にアイコンがあり、矢印のようなものがあります。そこには、 "Create User Step"オプションを選択できます。これはコントロールを変形し、内部で使用される別のコントロールに展開します。これで、エラーメッセージ(リテラルコントロール)にアクセスして静的メッセージを表示するか、コードから動的に変化するメッセージを表示することができます。

CreateUserWizardに、CreateUser、CreateUserError、CreatedUserなどのイベントを追加することもできます。これにより、動作をカスタマイズしたり、作成方法をさらに使用したりすることができます。ここで