アプリケーションに、ユーザーが無期限にログに記録されたままにすることを確認できる機能が必要です(Cookieの有効期限を今から3か月に任意に設定します)。
これに対処するために私が持っているコードは
private static HttpCookie GetFormsAuthenticationCookie(string userNameResponse,
bool persistCookie)
{
var cookie = FormsAuthentication.GetAuthCookie(userNameResponse, persistCookie);
if (persistCookie)
cookie.Expires = DateTime.Now.AddMonths(3);
return cookie;
}
private void LoginUser(string userNameResponse, bool PersistCookie)
{
Response.Cookies.Add(GetFormsAuthenticationCookie(userNameResponse, PersistCookie));
string navigateAfterUrl = FormsAuthentication.GetRedirectUrl(userNameResponse,
PersistCookie);
Response.Redirect(navigateAfterUrl);
}
ただし、後でサイトに戻ったときに、再度ログインする必要があります。Cookieが有効期限とともに返され、セッションCookieとして設定されていないことを確認しました(ブラウザを閉じたり再度開いたりしてもテストされ、Cookieはまだ存在します)。私の考えでは、ASP.NETがセッションを期限切れにしたときと関係があると思います。
web.configに特定のマシンキーを設定しているので、IISが再起動された場合などに同じCookieが機能しないようにする必要がありますか?私は他に何もすることが考えられないので、誰かがこれを引き起こしている可能性があるか、少なくともこれをさらに追跡する方法について何か提案がありますか?