我正在构建一个 Web 应用程序,当用户登录时,他的凭据首先会根据数据库进行验证。如果凭据正确,则会创建 FormsAuthenticationTicket。然后从该票创建一个 cookie。设置了 Expires 和 Path 属性。见下文。
FormsAuthenticationTicket ticket=new FormsAuthenticationTicket(1, model.User.UserName,
DateTime.Now, DateTime.Now.AddHours(2), RememberMeCheckBox.Checked,
model.User.Id.ToString()+" "+model.User.UserType.ToString());
string cookieStr = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieStr);
cookie.Expires=ticket.Expiration;
cookie.Path = FormsAuthentication.FormsCookiePath;
Response.Cookies.Add(cookie);
Response.Redirect("DummyForm.aspx");
当我将响应重定向到新页面时,在 Page_Load 事件中会检查 cookie 的存在。
HttpCookie cookie=HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookiePath];
if(cookie!=null)
{
//Do stuff
}
else
{
//Do other stuff
}
当我运行应用程序时,它的行为就像 cookie 变量为空一样。有什么我遗漏的吗?在此先感谢您的帮助。
cookie.Domain="localhost";
cookie.Name="My auth cookie";
我还在 web.config 中将域属性设置为 localhost。但是,它仍然不起作用。我使用 Google 的开发人员工具检查了 cookie,但在那里我看不到它。