Die ASP.NET -Mitgliedschaft ist falsch genehmigt, erlaubt aber dennoch eine Anmeldung

StackOverflow https://stackoverflow.com/questions/1212503

  •  06-07-2019
  •  | 
  •  

Frage

Ich habe den Anbieter von Standardkonto -Mitgliedschaftsanbieter geändert, um festgelegt für false zu genehmigen.

    public MembershipCreateStatus CreateUser(string userName, string password, string email)
    {
        MembershipCreateStatus status;
        _provider.CreateUser(userName, password, email, null, null, false, null, out status);
        return status;
    }

Aber dann gehe ich zur Anmeldeseite zurück und ermöglicht es mir, mich anzumelden. Sollte es nicht scheitern und sagen, dass ich nicht genehmigt bin?

BEARBEITEN:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Register(string userName, string email, string password, string confirmPassword, string address, string address2, string city, string state, string homePhone, string cellPhone, string company)
    {

        ViewData["PasswordLength"] = MembershipService.MinPasswordLength;

        if (ValidateRegistration(userName, email, password, confirmPassword))
        {

            // Attempt to register the user
            MembershipCreateStatus createStatus = MembershipService.CreateUser(userName, password, email);

            if (createStatus == MembershipCreateStatus.Success)
            {
                FormsAuth.SignIn(userName, false /* createPersistentCookie */);

                TempData["form"] = Request.Form;
                TempData["isActive"] = false;
                return RedirectToAction("Create", "Users");
            }
            else
            {
                ModelState.AddModelError("_FORM", ErrorCodeToString(createStatus));
            }
        }

        // If we got this far, something failed, redisplay form
        return View();
    }
War es hilfreich?

Lösung

(Es sieht so aus, als würde die andere Kopie dieser Frage geschlossen, also habe ich meine Antwort hier kopiert)

Httprequest.isAuthenticated Gibt true zurück, wenn httpcontext.user.identity nicht null ist und es ist authentifizierte Eigenschaft gibt true zurück.

Die aktuelle Identität wird in der festgelegt FormsAuthenticationModule, aber es hat nichts mit Ihrem Mitgliederprovider zu tun. Tatsächlich verweist es nicht einmal. Alles, was es tut, ist zu prüfen, ob das Authentifizierungs -Cookie noch eingestellt ist und noch gültig ist (wie es ist, ist nicht abgelaufen).

Ich denke, das Problem ist, dass Sie einen der anrufen Formsauthentifizierung Methoden wie RedirectFromLoginPage, das ist ein Einstellungen des Authentifizierungs -Cookies. Wenn Sie warten müssen, bis der Benutzer genehmigt ist, müssen Sie sicherstellen, dass Sie das Cookie nicht einstellen.

Aktualisieren

Es gibt keine Werte von MITGLIEDSCHAFTREATUSUS Dadurch werden angegeben, dass der Benutzer erstellt, aber nicht genehmigt wurde, sodass Ihr Code aufgerufen wird FormsAuth.SignIn ohne tatsächlich zu überprüfen, ob der Benutzer genehmigt wurde.

FormsAuth.SignIn Legt nur den Keks fest, das war's. Es bestätigt den Benutzer nicht oder hat auf andere Weise einen Zusammenhang zu Ihrem Mitgliedsabschied. Wenn die Genehmigung asynchron ist (dh auf einen Menschen warten), protokollieren Sie den Benutzer nicht automatisch, indem Sie FormsAuth.signin aufrufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top