2009-11-30 8 views
7

FormsAuthenticationTicket을 사용하여 비 영구 쿠키를 만드는 데 문제가 있습니다. 티켓에 userdata를 저장하려고하므로 FormsAuthentication.SetAuthCookie() 또는 FormsAuthentication.GetAuthCookie() 메서드를 사용할 수 없습니다. 이 때문에 FormsAuthenticationTicket을 만들고 HttpCookie에 저장해야합니다.FormsAuthenticationTicket을 사용하여 비 지속적인 쿠키 만들기

내 코드는 다음과 같습니다

DateTime expiration = DateTime.Now.AddDays(7); 

// Create ticket 
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2, 
    user.Email, 
    DateTime.Now, 
    expiration, 
    isPersistent, 
    userData, 
    FormsAuthentication.FormsCookiePath); 

// Create cookie 
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket)); 
cookie.Path = FormsAuthentication.FormsCookiePath; 
if (isPersistent) 
    cookie.Expires = expiration; 

// Add cookie to response 
HttpContext.Current.Response.Cookies.Add(cookie); 

을 변수 isPersistent 사실 모든 것이 잘 작동하고 쿠키가 지속됩니다. 그러나 isPersistent가 false이면 쿠키는 어쨌든 지속되는 것으로 보입니다. 브라우저 창에서 사인온하고 닫은 다음 브라우저를 다시 열고 여전히 로그인되어 있습니다. 쿠키를 비 지속으로 설정하려면 어떻게해야합니까?

세션 쿠키와 비 지속적인 쿠키가 같습니까? 쿠키 정보가 서버의 sessiondata에 저장되어 있습니까? 아니면 모든 요청/응답에서 서버로 전송 된 쿠키입니까?

답변

3

시도의 삭제 :

if (!isPersistent) { cookie.Expires = DateTime.Now.AddYears(-1); }

:

if (isPersistent) { cookie.Expires = expiration; }

... 그리고로 대체

관련 문제