如何判断cookies 过期?(时间相减)
本帖最后由 waCtr 于 2013-09-21 21:42:13 编辑 当cookie为空时 写入cookie
在写入cookie的时候 把服务器时间写入cookie 时间为1小时
如果cookie不为空 那么怎么判断这个cookie是否超过时间呢?
如果超过了就重新登录,如果没有则从新写入新时间(也就是取出cookie中的时间与服务器当前时间相减是否过期)
没有超过那么设定新时间
代码如下: 望大神改进
//写入cookie方法SetUser2(string Name,string Pwd)
DateTime expires = default(DateTime);
expires=DateTime.Now.AddHours(1);//1小时
HttpCookie cookie = new HttpCookie(CookieName);
cookie.Values.Add("n", Name);
cookie.Values.Add("P", Pwd);//密码
cookie.Values.Add("T", expires.ToString("yyyy-MM-dd HH:mm:ss"));//时间
HttpContext.Current.Response.Cookies.Set(cookie);
//读取cookie方法
HttpCookie cookie = HttpContext.Current.Request.Cookies[CookieName];
if (cookie != null)
{
string Name = cookie.Values["n"];
string PWD = cookie.Values["P"];
//如何取出时间 并判断是否过期?
//如果没过期则从新写入1小时过期时间,如果过期则同样创建新cookie
//从新写入cookie
SetUser2(this._Name, this.Pwd);
return true;
}
分享到:
[解决办法]
密码都写到浏览器端了?随便谁在网页上弄个脚本(例如许多网站都有第三方广告插件)都可以读取密码?
cookie.Values.Add("T", expires.Tick.ToString())
你就把expires写到cookie里了。不要读if (DateTime.Now.CompareTo(cookie.Expires) > 0),应该读取T这个cookie值来得到你的Expires。
[解决办法]
if (DateTime.Now.CompareTo(Convert.ToDateTime(cookie.Values["T"].ToString())) > 0)
{
}