2012-02-15 28 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

フォーム認証Cookieとは異なり、独自のCookieを持っています認証とセッションのために。 – Believe2014

答えて

4

セッションが2枚の異なるクッキーがあり

+0

フォーム認証を私に御了承ください。セッションIDにリンクされたバスケットを作成しているときに、これを解決するにはどうすればよいでしょうか?2人のユーザーが同じセッションIDを持っていれば、 – CallumVass

+0

別のセッションをハイジャックする唯一の方法は、実際にクッキーを持たせることです。しかし、ユーザーをログアウトすると、現在のセッションを破棄するSession.Abandon()を呼び出すことができます。 – MikeSW

+0

Intellisenseを使用していて、Abandonメソッドを見つけただけですが、それでも同じセッションIDを出力します – CallumVass

関連する問題