zoukankan      html  css  js  c++  java
  • 一个LDAP验证的简单例子

    公司做项目,要求做一个LDAP验证:简单实现如下:

    default.aspx

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="LdapLogin._Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <link href="css/layout.css" rel="stylesheet" type="text/css" />
        <title></title>
    </head>
    <script type="text/javascript">
        var name, password, domain;
        function CheckValue() {
            AjaxPro.timeoutPeriod = 121000;
            name = document.getElementById("txtUserName").value;
            password = document.getElementById("txtPassword").value;
            domain = document.getElementById("txtDomain").value;
            if (name.indexOf("\\") != -1) {
                domain = name.split("\\")[0];
                name = name.split("\\")[1];
            }
            if (name.indexOf("@") != -1) {
                domain = name.split("@")[1];
                name = name.split("@")[0];
            }
            if (name == "") {
                alert("Please input LDAP User");
                document.getElementById("txtUserName").focus();
                return false;
            }
            if (password == "") {
                alert("Please input LDAP Password");
                document.getElementById("txtPassword").focus();
                return false;
            }
            if (document.getElementById("txtDomain").readOnly == false && domain == "") {
                alert("Please input LDAP Domain");
                document.getElementById("txtDomain").focus();
                return false;
            }
            return true;
        }
    
        function login() {
            if (CheckValue()) {
                LdapLogin._Default.CheckLADPAccount(domain, name, password, loginCallBack);
            }
        }
    
        function login2() {
            if (CheckValue()) {
                LdapLogin._Default.CheckLADPAccount2(domain, name, password, loginCallBack);
            }
        }
    
        function loginCallBack(res) {
            if (res.value) {
                alert("login successfully!");
            }
            else{
                alert("login failed");
            }
        }
    
        function txtUserChange() {       
            var name = document.getElementById("txtUserName").value;
            if (name.indexOf("\\") != -1 || name.indexOf("@") != -1) {
                document.getElementById("txtDomain").readOnly = true;
                document.getElementById("txtDomain").setAttribute("style", "background-color:#E4E4E4;150px");
            }
            else {
                document.getElementById("txtDomain").readOnly = false;
                document.getElementById("txtDomain").setAttribute("style", "background-color:#FFF;150px");
            }
        }
    </script>
    <body>
        <form id="form1" runat="server">
        <br /><br /><br />
        <table align="center">
        <tr>
            <td>LDAP User:</td>
            <td><input type="text" id="txtUserName" style="150px" onkeyup="txtUserChange()" value="rocky.gao"/></td>
        </tr>
         <tr>
            <td>LDAP Password:</td>
            <td> <input type="password" id="txtPassword" style="150px" value="Oraclesz5"/></td>
        </tr>
             <tr>
            <td>Domain:</td>
            <td> <input type="text" id="txtDomain" style="150px" value="suzsoft.com"/></td>
        </tr>
         <tr>
            <td colspan="2" align="center"> </td>        
        </tr>
         <tr>
            <td><input type="button" id="btnLogin1" value="Login 1" onclick="login()" style="100px;height:30px"></td> 
            <td align="right"><input type="button" id="btnLogin2" value="Login 2" onclick="login2()" style="100px;height:30px"></td>        
        </tr>
        </table>    
        </form>
        
        <div id="maskDiv">
            <div class="loadingDiv">
                <img alt="loading..." src="Images/loading.gif" /><br />
                <br />
                <span>Loading...</span>
            </div>
        </div>
    </body>
    </html>
    
    <script type="text/javascript">
        AjaxPro.onLoading = function(b) {
            var divMask = document.getElementById("maskDiv");
            if (b) {
                divMask.style.display = "block";
            }
            else {
                divMask.style.display = "none";
            }
        };
    </script>
    

    Default.aspx

    using System;
    using System.Configuration;
    using System.DirectoryServices;
    
    namespace LdapLogin
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
            }
            
            [AjaxPro.AjaxMethod]
            public bool CheckLADPAccount(string domain, string username, string password)
            {
                DirectoryEntry de = new DirectoryEntry("LDAP://" + domain, username, password, AuthenticationTypes.Secure);
                DirectorySearcher deSearch = new DirectorySearcher();
                deSearch.SearchRoot = de;
                deSearch.Filter = "(sAMAccountName=" + username + ")";
                SearchResult results = null;
                try
                {
                    results = deSearch.FindOne();
                }
                catch (Exception ex)
                {
                    return false;
                } 
                finally
                {
                    de.Dispose();
                }
                return results != null;
            }
    
            [AjaxPro.AjaxMethod]
            public bool CheckLADPAccount2(string domain, string username, string password)
            {
    
                DirectoryEntry de = new DirectoryEntry("LDAP://" + domain, username, password, AuthenticationTypes.Secure);
                DirectorySearcher deSearch = new DirectorySearcher();
                deSearch.SearchRoot = de;
                deSearch.Filter = "(&(objectCategory=person)(objectClass=USER))";
                SearchResult results = null;
                try
                {
                    results = deSearch.FindOne();
                }
                catch (Exception ex)
                {
                    return false;
                }
                finally
                {
                    de.Dispose();
                }
                return results != null;
    
            }
        }
    }
    

     CheckLADPAccount和CheckLADPAccount2都可以登录,"(&(objectCategory=person)(objectClass=USER))还不是很明白有什么作用,因为这两种方法效果一样

  • 相关阅读:
    array_map()与array_shift()搭配使用 PK array_column()函数
    Educational Codeforces Round 8 D. Magic Numbers
    hdu 1171 Big Event in HDU
    hdu 2844 poj 1742 Coins
    hdu 3591 The trouble of Xiaoqian
    hdu 2079 选课时间
    hdu 2191 珍惜现在,感恩生活 多重背包入门题
    hdu 5429 Geometric Progression 高精度浮点数(java版本)
    【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
    hdu::1002 A + B Problem II
  • 原文地址:https://www.cnblogs.com/liugang/p/2168716.html
Copyright © 2011-2022 走看看