FormsauthenticationTicket을 사용하여 비 연개 쿠키를 만듭니다
-
10-07-2019 - |
문제
FormsauthenticationTicket을 사용하여 비가 유명한 쿠키를 만드는 데 어려움이 있습니다. userData를 티켓에 저장하고 싶으므로 FormsAuthentication.setAuthCookie () 또는 FormsAuthentication.getAuthCookie () 메소드를 사용할 수 없습니다. 이로 인해 FormsauthenticationTicket을 만들어 httpcookie에 저장해야합니다.
내 코드는 다음과 같습니다.
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가 거짓 일 때 쿠키는 어쨌든 지속되는 것 같습니다. 브라우저 창에 로그인하고, 닫고 브라우저를 다시 엽니 다. 그리고 여전히 로그인된다. 쿠키를 어떻게 비 연개적으로 설정합니까?
비 연개 쿠키는 세션 쿠키와 동일합니까? 쿠키 정보가 서버의 세션 데이터에 저장되어 있습니까? 아니면 서버에 대한 모든 요청/응답에서 쿠키가 전송됩니까?
해결책
삭제 시도 :
if (isPersistent)
{ cookie.Expires = expiration; }
... 그리고 그것을 대체합니다 :
if (!isPersistent) {
cookie.Expires = DateTime.Now.AddYears(-1); }
제휴하지 않습니다 StackOverflow