문제

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top