FormsAuthenticationTicketを使用して非永続的なCookieを作成する
-
10-07-2019 - |
質問
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情報はサーバー上のセッションデータに保存されていますか、それともCookieはサーバーへのすべてのリクエスト/レスポンスで転送されますか?
解決
削除を試してください:
if(isPersistent)
{cookie.Expires = expiration; }
...そして、次のものに置き換えます:
if(!isPersistent){
cookie.Expires = DateTime.Now.AddYears(-1); }
所属していません StackOverflow