質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top