2012-04-19 13 views
0

私はサーバサイドのカスタムバリデータを持っています。それは発砲していないので、私はテキストボックスを検証するためにクライアント側を使いたいです。これは、アクティブなディレクトリを含んでいます。私はコードをクライアント側に変換することはできませんか?サーバ側のカスタムバリデータをクライアント側に置き換えます

<td class="style4"> 
      <asp:TextBox ID="TextUserName" runat="server"></asp:TextBox> 
     </td><td><asp:CustomValidator ID="CustomValidatorUser" runat="server" ControlToValidate="TextUserName" 
           ErrorMessage="Minimum of 6 (six) alphanumeric characters." 
       OnServerValidate="ValidateUser" Display="Dynamic" 
           ValidateEmptyText="True" ></asp:CustomValidator></td> 

そして

protected void ValidateUser(object source, ServerValidateEventArgs args) 
{ 
     string UserNameCreated = TextUserName.Text; 
     string AD_Server = System.Configuration.ConfigurationManager.AppSettings["AD_Server"]; 
     DirectoryEntry entry = new DirectoryEntry(AD_Server); 
     entry.AuthenticationType = AuthenticationTypes.Secure; 

     DirectorySearcher deSearch = new DirectorySearcher(entry); 
     deSearch.Filter = "(&(objectClass=user)(samaccountname=" + UserNameCreated + "))"; 

     SearchResultCollection results = deSearch.FindAll(); 
     Match match = Regex.Match(args.Value, @"^[a-zA-Z0-9]{6,}$", 
    RegexOptions.IgnoreCase); 
      if (results.Count > 0) 
      args.IsValid = false; 
     else if (match.Success) 
      args.IsValid = true; 
     // true means that it is validated. 
     else 
      args.IsValid = false; 
} 

私の思考:

拳:

<td class="style4"> 
      <asp:TextBox ID="TextUserName" runat="server"></asp:TextBox> 
     </td><td><asp:CustomValidator ID="CustomValidatorUser" runat="server" ControlToValidate="TextUserName" 
           ErrorMessage="Minimum of 6 (six) alphanumeric characters." 
       ClientValidatationFunction="ValidateUser" Display="Dynamic" 
           ValidateEmptyText="True" ></asp:CustomValidator></td> 

セカンド

<script language="javascript"> 
function ValidateUser(source, arguments) 
{ 
    var RegularExpression = /^[a-zA-Z0-9]{6,}$/; 
    if (arguments.Value.test(RegularExpression) == 0){ 
     arguments.IsValid = true; 
    } else { 
     arguments.IsValid = false; 
    } 
} 
</script> 

それではADはどうですか?多分それは間違った質問です!

ありがとうございました。

答えて

1

私はこのコードをどのように使用しようとしていますか?どのアスペクトの認証に関連する場合は、クライアントコードが簡単にクラックする可能性があるため、サーバ側ですべての検証を実行する必要があります。

このように、セキュリティに問題がない場合は、結果を得るためにサーバー上にWebメソッドを持つことができます。あなたはajax呼び出しを通してこのWebメソッドを呼び出します。

+0

特定の検証では、両方を実行することをお勧めします。例えば、クライアント側でチェックされた必須フィールドは、より迅速なフィードバックを生成することができる。 – Guvante

+0

@Guvante:セキュリティは問題ではないが、ユーザーを認証しようとしている場合は、サーバーで必要な操作を実行する必要があります(空のフィールドの検証は除きます)。クライアントの検証がこの場合に適しているかどうかは、ユーザーからの情報がそれ以上ないと言うことはありません。 –

+0

私にajaxコールリンクを教えてください。純粋なクライアント側のチェックや、クライアント側とサーバー側の組み合わせが考えられます。 –

関連する問題