2012-12-13 2 views
8

Ich versuche, einen Cookie bei der Anmeldung zu setzen und Probleme mit dem Abrufen der aktuellen Benutzer-ID nach der Anmeldung. Im folgenden Beispiel ist intUserId -1 und WebSecurity.IsAuthenticated ist false. Ist dies nicht der richtige Ort, um diesen Code zu setzen? Danach wird es auf die Homepage weitergeleitet ... also nicht sicher, warum das nicht der richtige Ort ist.MVC 4 SimpleMembership - Warum WebSecurity.CurrentUserId -1 nach dem Login

// POST: /Account/Login 

     [HttpPost] 
     [AllowAnonymous] 
     [ValidateAntiForgeryToken] 
     public ActionResult Login(LoginModel model, string returnUrl) 
     { 
      if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) 
      { 
       //TODO: set current company and facility based on those this user has access to 
       int intUserId = WebSecurity.GetUserId(User.Identity.Name); 
       int intUserId2 = WebSecurity.GetUserId(model.UserName); 
       UserSessionPreferences.CurrentCompanyId = 1; 
       UserSessionPreferences.CurrentFacilityId = 1; 

       return RedirectToLocal(returnUrl); 
      } 

      // If we got this far, something failed, redisplay form 
      ModelState.AddModelError("", "The user name or password provided is incorrect."); 
      return View(model); 
     } 

Antwort

8

Bei der Anmeldung wird nur der Cookie für die Formularauthentifizierung festgelegt. Die Art, wie die asp.net-Authentifizierung funktioniert, besteht darin, dass sie das Cookie lesen muss, um die Anfrage zu authentifizieren, aber da das Cookie beim Start der Anmeldeseite nicht existierte, weiß das Framework nichts über den Benutzer.

Laden Sie die Seite neu, und Sie werden feststellen, dass die Informationen verfügbar sind.

FYI, das ist nichts Neues mit SimpleMembership oder WebSecurity, das ist die Art, wie die Formularauthentifizierung immer funktioniert hat.

+3

Ok, also was ich getan habe, war int intUserId2 = WebSecurity.GetUserId (model.UserName); um die ID dieses Benutzers zu erhalten. Danke für die Hilfe. –

Verwandte Themen