c#.net - 认证过早到期

时间:2009-12-18 13:11:36

标签: c# .net authentication forms

我将c#中的身份验证cookie设置为持久性,并且结束日期为一年,但设置后不会过长。代码如下......

DateTime endDate = new DateTime();
endDate = DateTime.Now.AddYears(1);

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
                                                            username,
                                                            DateTime.Now,
                                                            endDate, 
                                                            true, 
                                                            userId.ToString(),
                                                            FormsAuthentication.FormsCookiePath);


string encryptedTicket = FormsAuthentication.Encrypt(ticket);

HttpCookie authCookie = new HttpCookie(
                       FormsAuthentication.FormsCookieName,
                       encryptedTicket);

authCookie.Expires = endDate;

Response.Cookies.Add(authCookie);

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我想通了......当我检查用户是否经过身份验证时,我使用了以下代码......

if (HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated)
{
     return true;
}

当我删除第一个检查(即HttpContext.Current.User!= null)时,它开始工作。虽然我真的不明白当HttpContext.Current.User为null时HttpContext.Current.User.Identity.IsAuthenticated如何才能成立。

无论哪种方式,它现在都有效,所以没问题。