如何读取dot net core中的cookie过期?

时间:2017-02-04 20:23:50

标签: cookies asp.net-core asp.net-core-mvc .net-core asp.net-core-1.0

我看到您可以在向响应添加新Cookie时使用CookieOptions设置过期时间。但是,HttpContext.Request.Cookies返回一个IRequestCookieCollection,它似乎只给你键/值对。

有没有办法为请求cookie读取CookieOptions(特别是Expiration)?

我正在使用.Net Core(1.0.0-preview2-003131)

注意:我需要在请求处理中读取任意cookie的到期,而不是框架生成的auth cookie的到期。

2 个答案:

答案 0 :(得分:2)

我通过对事件作出反应来获得这一点" OnValidatePrincipal"

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
... 
Events = new CookieAuthenticationEvents
{
OnValidatePrincipal = CookieAuthenticationEventHandler.ValidatePrincipalAsync
}
});

然后我可以在验证委托人后,在我的ValidatePrincipalAsync中使用属性context.Properties.ExpiresUtc

时访问该Cookie

为了能够稍后在我的控制器中获取该expires属性,我将这样添加到我的HttpContext中:

context.Request.HttpContext.Items.Add("ExpiresUTC", context.Properties.ExpiresUtc);

但我对这部分并不满意,也许有人可以直接在控制器中为您提供更好的方式来访问它,而无需从OnValidatePrincipal获取它。

答案 1 :(得分:0)

不,HTTP不包含有关在请求中发送的cookie的任何详细信息,仅包括其名称和值。 auth cookie解决方法仅适用,因为过期也嵌入在值中。