/// <summary>Windows集成登录</summary> public static WebActionResult WindowsLogin(this HttpContextBase context, WindowsIdentity logonUser) { var result = new WebActionResult(); if (!logonUser.IsAuthenticated) { result.ErrorMessage = "Windows登录失败,不允许匿名登录!"; return(result); } var identityService = GetService <IADIdentityService>(); if (!identityService.ValidateCredentials(logonUser)) { result.ErrorMessage = "Windows登录失败,账户不存在!"; return(result); } var service = GetService <ISecurityService>(); var windowsUser = logonUser.Name.Split('\\'); var windowsUserName = windowsUser[1]; var loginResult = context.Login(service, AuthenticationType.Windows, windowsUserName, windowsUserName); if (!loginResult.Succeed) { if (identityService.AutoRegisterUser) { var registerResult = context.AutoRegisterDomainUser(windowsUserName); if (!registerResult.Succeed) { result.ErrorMessage = registerResult.ErrorMessage; return(result); } } loginResult = context.Login(service, AuthenticationType.Windows, windowsUserName, windowsUserName); if (!loginResult.Succeed) { result.ErrorMessage = loginResult.ErrorMessage; return(result); } } result.Succeed = true; var returnUrl = context.Request["returnUrl"]; if (!returnUrl.IsNullOrEmpty()) { returnUrl = returnUrl.UrlDecode(); } result.Data = context.GetPortalLoginReturnUrl(service, loginResult.Token, loginResult.Principal, returnUrl); context.AddAuthCookie(loginResult.Token, loginResult.Principal, false); return(result); }