MVC中使用域用户名和密码登录系统

login.cshtml

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title></title>
    <link href="~/Content/AdminLTE/bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
    <link href="~/Content/AdminLTE/dist/css/skins/skin-dark.css" rel="stylesheet" />
    <script src="~/Scripts/jquery-1.10.2.js"></script>


    <script type="text/javascript">
        $(function () {

        })
        function Login() {
            UserName = $('#txtUserName').val();
            Pwd      = $('#txtPassword').val();
            var url = "/Login/CheckADUser?UserName=" + UserName + "&Pwd=" + Pwd  ;
            $.ajax({
                url: url,
                async: false,
                type: "POST",
                contentType: "application/json",
                // data: param,
                success: function (data) {
                    console.log(data);

                    if (data == 'Success') {
                        window.location.href = '/Document/DocumentAssistant';
                    } else {
                        alert('User Name or Password is Incorrect');                        
                    }
                }
            });
        }

        function detectBrowser() {
            var userAgent = navigator.userAgent;
            var browser   = navigator.appName
            var b_version = navigator.appVersion
            var version = parseFloat(b_version)
            var isChrome = userAgent.indexOf("Chrome") > -1; //判断是否Chrome浏览器
            if (!isChrome) {
                alert('Please use chrome open this page!');
            }
            console.log(browser + ' %% ' + userAgent);
        }
    </script>
</head>


<body class="hold-transition skin-blue sidebar-mini"style="background-color:black"  onload="detectBrowser()">

        <div class="content" style="color:black;background-color:transparent;">
            <div class="row"> </div>
            <div class="row"> </div>
            <div class="row"> </div>
            <div class="row"> </div>
            <div class="row"> </div>
            <div class="row"> </div>
            <div class="row"> </div>
            <div class="row"> </div>

            <div class="row">
                <div class="col-md-4">

                </div>
                <div class="col-md-3">
                    <div class="panel panel-primary" style="background-color:transparent;">
                        <div class="panel-heading">
                            <h3 class="panel-title">User Login</h3>
                        </div>
                        <div class="panel-body">
                            <div class="row">
                                <div class="col-md-1">

                                </div>
                                <div class="col-md-4">
                                    <input type="text" id="txtUserName" value="" placeholder="UserName" />
                                </div> 
                            </div>
                            <div class="row"> </div>
                            <div class="row">
                                <div class="col-md-1">

                                </div>
                                <div class="col-md-4">
                                    <input type="password" id="txtPassword" value="" placeholder="Password" />
                                </div>
                            </div>
                            <div class="row"> </div>
                            <div class="row">
                                <div class="col-md-1">

                                </div>
                                <div class="col-md-4">
                                    <button class="btn btn-primary " onclick="Login()">Login</button>
                                </div>
                                <div class="col-md-4">
                                    <button class="btn btn-primary ">Cancel</button>
                                </div>
                            </div> 
 
                        </div>
                    </div>
                </div>
 
            </div>
 
        </div> 
 
</body>

</html>

LoginController.cs 

using DocumentAssistant.Service;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace DocumentAssistant.Controllers
{
    public class LoginController : Controller
    {
        // GET: Login
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Login()
        {
            return View();
        }

        /// <summary>
        /// 2018-03-07
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public JsonResult CheckADUser(string UserName,string Pwd)
        {

            LDAP ldap = new LDAP();
            string ErrorMsg = "";
            if (ldap.IsAuthenticated(UserName, Pwd))
            {
                ErrorMsg = "Success";
                Session["User"] = UserName;
                //Session["EmployeeNo"] = DBAuthority.GetEmployeeNo(UserName);
            }
            else
            {
                ErrorMsg = "Fail";
                Session["User"] = UserName;
                Session["EmployeeNo"] = "000";
            }

            //string js = JsonConvert.SerializeObject();

            return Json(ErrorMsg);
        }
    }
}

LDAP.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.DirectoryServices;
using System.Configuration;
using DocumentAssistant.Service;
 
/// <summary>
/// Summary description for LDAP
/// </summary>
public class LDAP
{
    public string Path
    {
        get;
        set;
    }

    public string FilterAttribute
    {
        get;
        set;
    }

    public string Domain
    {
        get;
        set;
    }

    public bool ByPassADAuth
    {
        get;
        set;
    }

    public string ByPassADAuthPwd
    {

        get;
        set;
    }

    public LDAP()
    {
        Path = ConfigurationManager.AppSettings["LDAPPath"];
        Domain = ConfigurationManager.AppSettings["DomainDefault"];
        ByPassADAuth = bool.Parse(ConfigurationManager.AppSettings["ByPassADAuth"]);
        ByPassADAuthPwd = ConfigurationManager.AppSettings["ByPassADAuthPwd"];
    }

 
    public bool IsAuthenticated(string username, string pwd)
    {
        bool Result = false;
        DirectoryEntry entry = new DirectoryEntry(Path, username, pwd);
        try
        {
            // Bind to the native AdsObject to force authentication. 
            Object obj = entry.NativeObject;
            DirectorySearcher search = new DirectorySearcher(entry);
            search.Filter = "(SAMAccountName=" + username + ")";
            search.PropertiesToLoad.Add("cn");
            SearchResult result = search.FindOne();

            if (null == result)
            {
                Path = String.Empty;
                FilterAttribute = String.Empty;
                Result = false;
            }
            else
            {
                // Update the new path to the user in the directory
                Path = result.Path;
                FilterAttribute = (String)result.Properties["cn"][0];
                Result = true;
            }
        }
        catch (Exception ex)
        {
            Common.LOG.WriteLog(ex.Message);
            return Result;
            //throw new Exception("Error authenticating user. " + ex.Message);
        }
        return Result;
    }
}

web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />

    <add key="LDAPPath" value="LDAP://DC=asia,DC=AD,DC=YourCompany,DC=com" />
    <add key="DomainDefault" value="asia.ad.YourCompany.com" />
    <add key="ByPassADAuth" value="true" />
    <add key="ByPassADAuthPwd" value="df" />
    <add key="LoginUrl" value="~/Mobile/Login.aspx" />
  <connectionStrings> 
    <add name="ConnectionString" connectionString="Data Source=127.0.01;Initial Catalog=DEVDB;User ID=user;Password=user" providerName="System.Data.SqlClient" />
  </connectionStrings>  
  <system.web>
    <sessionState mode="InProc" timeout="15"/>
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" />
    <authentication mode="Windows" />
  </system.web>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
 
    </assemblyBinding>
  </runtime>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
    </compilers>
  </system.codedom>

 
</configuration>




猜你喜欢

转载自blog.csdn.net/easyboot/article/details/79757759