首页 新闻 会员 周边

mvc使用FormsAuthentication存储身份信息,请问为什么在Global.asax.cs中获取的身份信息Cookie没有过期时间

0
悬赏园豆:50 [已解决问题] 解决于 2021-04-09 11:30

我的网站使用FormsAuthentication进行身份信息的存储验证

在HomeController中,创建Tickt,然后加密存储Cookie,如图:

存储之后,通过监视可以看到Cookie的信息一切正常(尤其注意Expires和HttpOnly),如图:

然后登陆完成之后,在Global中获取Cookie验证登陆状态,如图:

发现虽然能获取到Cookie,但是Cookie的一些属性值不对,如图:

尤其是Expires和HttpOnly,这两个属性是我明确设置过的,但是确显示的默认值

当然,在浏览器中查看Cookie,是正常的,如图(请忽略值不对应,因为这是验证通过之后重设了一次过期时间导致的值改变):

我现在想在Global中对Cookie是否过期进行判断,但是因为Cookie信息异常,所以无法判断

请问为什么Global中的Cookie的部分属性和我设置的Cookie不对应?

xiaojunjor的主页 xiaojunjor | 初学一级 | 园豆:67
提问于:2020-04-24 16:26
< >
分享
最佳答案
0

如果要对Cookie进行过期判断的话你得把设置Cookie的过期时间作为Cookie的值存起来,至于你说的设置的Cookie不对应。。。我就不知道了

收获园豆:50
壹-ZL | 菜鸟二级 |园豆:246 | 2020-06-16 11:36
其他回答(2)
0

Cookie 能从 两个地方获取, 一个是请求, 一个是响应。

在HomeController 响应之前, 在Global 中获取Cookie 是从 Request中获取
在HomeController 响应之后,在Global 中获取Cookie 应该在Response中获取。

Tom.汤 | 园豆:3028 (老鸟四级) | 2020-05-13 15:00
0

再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;
}
}
}

F12-爱码士 | 园豆:254 (菜鸟二级) | 2020-10-20 12:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册