2012-02-15 45 views
2

我想知道如何在窗体身份验证中使用会话ID?因为我在家里的控制器上做了一个Response.Write(Session.SessionID);,然后注销。然后,我以新用户的身份登录并且会话ID相同。下面是我的登录和注销操作:ASP.NET MVC - 表单身份验证/会话ID

登录:

[HttpPost] 
     public ActionResult LogOn(LogOnModel model, string returnUrl) 
     { 
      try 
      { 
       if (ModelState.IsValid) 
       { 
         if (Membership.ValidateUser(model.UserName, model.Password)) 
         { 
          FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); 

          if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") 
           && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) 
          { 
           return Redirect(returnUrl); 
          } 
          else 
          { 
           return RedirectToAction("Index", "Home"); 
          } 
         } 
        else 
        { 
         ModelState.AddModelError("", "The user name or password provided is incorrect."); 
        } 
       } 

       // If we got this far, something failed, redisplay form 
       return View("LogonError", model); 
      } 
     catch (Exception ex) 
     { 
      string test = ex.Message; 
      return PartialView("_Error", test); 
     } 
    } 

注销等:

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

     return RedirectToAction("Index", "Home"); 
    } 
+0

有2周不同的Cookie用于认证和会话。 – Believe2014 2014-06-02 02:41:09

回答

4

会议都有自己的cookie,从窗体身份验证cookie不同

+0

原谅我,但我是表单身份验证新手。那么我将如何解决这个问题,因为我正在创建一个链接到会话ID的篮子,所以如果两个用户具有相同的会话ID,那么他们会看到其他每个项目? – CallumVass 2012-02-15 11:49:20

+0

争夺另一个会话的唯一方法是拥有实际的cookie。但是,当您登录用户时,您可以调用Session.Abandon()来销毁当前会话。 – MikeSW 2012-02-15 11:58:32

+0

我刚刚尝试了这一点,同时使用智能感知,并找到了放弃方法,但它仍然输出相同的会话ID – CallumVass 2012-02-15 12:01:00