Asp.net 饼干似乎永远不存在
关于cookie,我面临一个奇怪的问题:我试图在用户第一次登录应用程序时使用用户id设置cookie,下次,如果cookie存在,则不再需要用户身份验证 为此,我使用以下代码:Asp.net 饼干似乎永远不存在,asp.net,cookies,Asp.net,Cookies,关于cookie,我面临一个奇怪的问题:我试图在用户第一次登录应用程序时使用用户id设置cookie,下次,如果cookie存在,则不再需要用户身份验证 为此,我使用以下代码: 要设置cookie,请执行以下操作: HttpCookie userCookie = new HttpCookie("UserCookie"); userCookie.Value = UserId.ToString(); userCookie.Expires = DateTime.Now.AddHours(1); Sy
- 要设置cookie,请执行以下操作:
HttpCookie userCookie = new HttpCookie("UserCookie"); userCookie.Value = UserId.ToString(); userCookie.Expires = DateTime.Now.AddHours(1); System.Web.HttpContext.Current.Response.Cookies.Add(userCookie);
HttpCookie UserCookie = System.Web.HttpContext.Current.Request.Cookies["UserCookie"]; if (UserCookie != null) { // redirect the user to another screen inside the application }
- 要获取cookie,请执行以下操作:
HttpCookie userCookie = new HttpCookie("UserCookie"); userCookie.Value = UserId.ToString(); userCookie.Expires = DateTime.Now.AddHours(1); System.Web.HttpContext.Current.Response.Cookies.Add(userCookie);
HttpCookie UserCookie = System.Web.HttpContext.Current.Request.Cookies["UserCookie"]; if (UserCookie != null) { // redirect the user to another screen inside the application }
非常感谢 您是否试图用设置cookie的相同代码获取cookie?如果是这样,cookie将不存在。页面交付后,在用户浏览器上设置Cookie 另外,您能确认
UserID.ToString()
实际上不是空字符串吗
要正确测试,请在A页设置cookie,然后重定向到B页并在此处获取cookie。用户ID的类型是什么?它是一个整数吗?是的,它有一个整数值。请尝试添加不只是一个小时的额外小时数。不要在时间上增加一个小时,试着增加7天。可能是浏览器(使用UTC或其他方式)错误地解释了时间。快速安全说明:我不知道您的完整实现,或者您是否考虑过这一点,但如果您的用户ID是连续的,并且以明文形式存储在cookie中,任何人都可以制作cookie,以无需密码即可按任何人的意愿登录。谢谢您的回复。我可以确认UserID.ToString()不是空字符串,我还尝试在登录页面中设置这个cookie,并在另一个页面中获取它,它工作得非常好。至于获取和设置部分,在登录页面中,我首先检查cookie是否已设置,如果未设置,我会尝试设置它。我真的很困惑。。。你说你在登录中设置了它,并且可以在另一个页面上完美地获得它?你是说下次你访问登录页面时cookie不存在吗?我最终成功地做到了这一点:似乎是因为我的cookie代码只有在某些变量不为null时才执行,而由于它们为null,我的cookie设置不正确。谢谢你的建议,尝试在另一个页面中获取cookie值,它帮助我找到了答案!谢谢不客气,很高兴一切正常。顺便说一句,不确定您是否意识到,但是当需要删除cookie时,Cookies.Delete(您的cookie)实际上不会从浏览器中删除它-您需要将过期日期设置为过去的日期,例如mycokie.Expires=Now.AddDays(-1)-然后设置cookie。它会在浏览器上杀死它。