2016-04-19 11 views
1

Ich habe versucht, über LDAP auf eine neue Anwendung zu authentifizieren, die ich vergeblich entwickle. Ich war immer in der Lage, dies bei anderen Anwendungen zu tun, aber dieses Mal wird es aus irgendeinem Grund nicht durchgehen. Ich öffne meine anderen Apps und versuche, den Code fast identisch zu replizieren, aber ich laufe immer wieder auf dasselbe Problem zu. Die App leitet auf die Seite um, die es tun sollte, wenn die Authentifizierung erfolgreich war, aber wenn ich versuche, zu einer anderen Seite zu navigieren, auf der ich eine Funktion mit [Authorize] davor habe, nehme ich die Login-Seite zurück. Ich habe vergeblich versucht zu prüfen, was das Problem sein könnte, aber ich kann es immer noch nicht finden. Bitte helfen. Hier sind einige Teile meines CodesASP.NET MVC LDAP Authentifizierung

//Accounts controller 
[HttpPost] 
public ActionResult Login(LoginViewModel model, string returnUrl) 
{ 

    string domain = (string)model.domain 
    string userName = (string)model.UserName; 
    string password = (string)model.Password; 

    try 
    { 
     DirectoryEntry entry = new DirectoryEntry(); 
     switch (domain) 
     { 
      case "OPTION1": 
       entry = new DirectoryEntry("LDAP://xx.xx.xx.xx:389", userName, password); 
       break; 
      case "OPTION2": 
       entry = new DirectoryEntry("LDAP://yy.yy.yy.yy:389", userName, password); 
       break; 

     } 
     object nativeObject = entry.NativeObject; 
     FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); 
     if (this.Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") 
        && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) 
     { 
      return this.Redirect(returnUrl); 
     } 
     return this.RedirectToAction("Index", "Home"); 


    } 
    catch (Exception ex) 
    { 

     this.ModelState.AddModelError(string.Empty, "The user name or password provided is incorrect."); 
    } 
    return View(model); 
} 

//web.config 
<authentication mode="Forms"> 
    <forms name=".ADAuthCookie" loginUrl="~/Account/Login" timeout="60" slidingExpiration="false" protection="All" /> 
</authentication> 


//in AccountViewModels I have 
using System.ComponentModel.DataAnnotations; 

public class LoginViewModel 
{ 
[Required] 
[Display(Name = "User name")] 
public string UserName { get; set; } 

[Required] 
[DataType(DataType.Password)] 
[Display(Name = "Password")] 
public string Password { get; set; } 

[Display(Name = "Remember me?")] 
public bool RememberMe { get; set; } 
} 

Antwort

0

Das Problem, das ich hier sehen kann, ist, dass Sie den Benutzer nicht validieren. Für z.B.

if (Membership.ValidateUser(model.UserName, model.Password)) 
{ 
    FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); 
    if (this.Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 &&  returnUrl.StartsWith("/") 
      && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) 
     { 
      return this.Redirect(returnUrl); 
     } 

     return this.RedirectToAction("Index", "Home"); 
} 
Verwandte Themen