2012-12-13 13 views
8

मैं लॉगिन पर एक कुकी सेट करने और लॉगिन के बाद वर्तमान उपयोगकर्ता आईडी प्राप्त करने के साथ समस्याएं रखने की कोशिश कर रहा हूं। नीचे में, intUserId -1 और वेब सुरक्षा है। प्रमाणीकृत गलत है। क्या यह कोड डालने के लिए सही जगह नहीं है? इसके बाद, यह होम पेज पर रीडायरेक्ट करता है ... इसलिए सुनिश्चित नहीं है कि यह सही जगह क्यों नहीं है।एमवीसी 4 SimpleMembership - क्यों WebSecurity.CurrentUserId -1 लॉगिन के बाद

// 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); 
     } 

उत्तर

8

लॉगिन केवल फॉर्म प्रमाणीकरण कुकी सेट करता है।

एएसपीनेट प्रमाणीकरण कार्य करता है कि यह अनुरोध को प्रमाणीकृत करने के लिए कुकी को पढ़ना चाहिए, लेकिन चूंकि लॉग इन पेज शुरू होने पर कुकी मौजूद नहीं थी, इसलिए ढांचे को उपयोगकर्ता के बारे में कुछ भी पता नहीं था।

पृष्ठ को फिर से लोड करें, और आपको जानकारी मिल जाएगी।

एफवाईआई, यह सरलमेम्बरशिप या वेब सुरक्षा के साथ कुछ भी नया नहीं है, इस तरह फॉर्म प्रमाणीकरण हमेशा काम करता है।

+3

ठीक है, तो मैंने जो किया वह int intUserId2 = WebSecurity.GetUserId (model.UserName) का उपयोग किया गया था; उस उपयोगकर्ता की आईडी प्राप्त करने के लिए। सहायता के लिए धन्यवाद। –