18 Stimmen

Formular-Authentifizierung in web.config

Ich verwende MVC3 und habe die Benutzerauthentifizierung in der Datei web.config festgelegt. Damit soll die Sqlserver-Authentifizierung umgangen werden.

Code wie unten in web.config:

<authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" >
        <credentials passwordFormat="Clear">
          <user name="test123" password="test123" />
        </credentials>
      </forms>
</authentication>

Ich habe versucht, mich mit der genannten Benutzerkennung und dem Kennwort anzumelden, aber ich erhalte folgende Fehlermeldung

Die Anmeldung war erfolglos. Bitte korrigieren Sie die Fehler und versuchen Sie es erneut.

* The user name or password provided is incorrect.

wenn ich in der Datei AccountController.cs debugge, scheitert an der MembershipService.ValidateUser(model.UserName, model.Password) Methode.

30voto

Alexander Prokofyev Punkte 32808

Wenn Sie die Standard ASP.NET MVC 3 AccountController.cs y AccountModels.cs Dateien erfahren Sie, was MembershipProvider.ValidateUser Methode wird intern verwendet (über Mitgliedschaft.Anbieter ). Wenn Sie das Passwort in der web.config speichern möchten, sollten Sie FormsAuthentication.Authenticate Methode an.

Zum Beispiel:

public class AuthorizationController : Controller
{
    public ActionResult LogOn()
    {
        return View("LogOn");
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult LogOn(string userName, string password, 
        bool rememberMe, string returnUrl)
    {
        if (!ValidateLogOn(userName, password))
            return View("LogOn");

        FormsAuthentication.SetAuthCookie(userName, rememberMe);

        if (!string.IsNullOrEmpty(returnUrl))
            return Redirect(returnUrl);
        else
            return RedirectToAction("Index", "News");

    }

    private bool ValidateLogOn(string userName, string password)
    {
        if (string.IsNullOrEmpty(userName))
            ModelState.AddModelError("username", "User name required");

        if (string.IsNullOrEmpty(password))
            ModelState.AddModelError("password", "Password required");

        if (ModelState.IsValid && !FormsAuthentication.
            Authenticate(userName, password))
            ModelState.AddModelError("_FORM", "Wrong user name or password");

        return ModelState.IsValid;
    }

    public RedirectToRouteResult LogOff()
    {
        FormsAuthentication.SignOut();

        return RedirectToAction("LogOn");
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X