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>