我的网站使用FormsAuthentication进行身份信息的存储验证
在HomeController中,创建Tickt,然后加密存储Cookie,如图:
存储之后,通过监视可以看到Cookie的信息一切正常(尤其注意Expires和HttpOnly),如图:
然后登陆完成之后,在Global中获取Cookie验证登陆状态,如图:
发现虽然能获取到Cookie,但是Cookie的一些属性值不对,如图:
尤其是Expires和HttpOnly,这两个属性是我明确设置过的,但是确显示的默认值
当然,在浏览器中查看Cookie,是正常的,如图(请忽略值不对应,因为这是验证通过之后重设了一次过期时间导致的值改变):
我现在想在Global中对Cookie是否过期进行判断,但是因为Cookie信息异常,所以无法判断
请问为什么Global中的Cookie的部分属性和我设置的Cookie不对应?
如果要对Cookie进行过期判断的话你得把设置Cookie的过期时间作为Cookie的值存起来,至于你说的设置的Cookie不对应。。。我就不知道了
Cookie 能从 两个地方获取, 一个是请求, 一个是响应。
在HomeController 响应之前, 在Global 中获取Cookie 是从 Request中获取
在HomeController 响应之后,在Global 中获取Cookie 应该在Response中获取。
再Global获取Session 可以再一下中获取,已下是一个案例,希望对你有帮助
private long userId = 0;//操作人
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
//必须先判断请求的是否是控制器,不然静态页面是没有Session 的
var controller = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"];
if (controller != null)
{
var user = Session["User"];
if (user != null)
{
Staff staff = user as Staff;
userId = staff.Id;
}
}
}