FormsAuthenticationTicketを使用して非永続的なCookieを作成するのに問題があります。ユーザーデータをチケットに保存したいので、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がtrueの場合、すべてが正常に機能し、Cookieが永続化されます。しかし、isPersistentがfalseの場合、Cookieはとにかく永続化されているようです。ブラウザウィンドウにサインオンして閉じ、ブラウザを再度開いてもログインしたままです。Cookieを非永続的に設定するにはどうすればよいですか。
非永続的なCookieはセッションCookieと同じですか?Cookie情報はサーバーのsessiondataに保存されていますか、それともサーバーへのすべての要求/応答でCookieが転送されますか?