Asp.net mvc FedAuth cookie在Firebug中不显示过期日期
我有一个用SSL保护的ASP.Net MVC站点,正在使用Asp.net mvc FedAuth cookie在Firebug中不显示过期日期,asp.net-mvc,asp.net-identity,Asp.net Mvc,Asp.net Identity,我有一个用SSL保护的ASP.Net MVC站点,正在使用System.IdentityModel.Services创建如下令牌: SessionSecurityToken token = new SessionSecurityToken(myClaimsPrincipal, TimeSpan.FromDays(1)); SessionAuthenticationModule sam = FederatedAuthentication.SessionAuthenticationModule; s
System.IdentityModel.Services
创建如下令牌:
SessionSecurityToken token = new SessionSecurityToken(myClaimsPrincipal, TimeSpan.FromDays(1));
SessionAuthenticationModule sam = FederatedAuthentication.SessionAuthenticationModule;
sam.WriteSessionTokenToCookie(token);
当我在浏览器中访问站点时,Firebug不会按预期显示过期日期。相反,到期日期显示为会话:
谁能解释一下为什么会这样?我假设ASP.Net在读取cookie时仍然可以在内部看到实际的过期日期?更重要的是,cookie过期时间实际设置在哪里?您在这里混合了两种不同的东西:
- 令牌到期正在确定令牌何时有效。在此之后,即使令牌被附加到请求,它也被认为是无效的,不会被接受。通常,过期时间在令牌本身内加密,这意味着它完全由令牌颁发者控制
- Cookie过期是由客户端(本例中是您的Web浏览器)控制的。一旦Cookie过期,它就不再附加到请求。但是,如果浏览器决定发送它,它将一直工作到令牌过期为止
会话securityToken
中也是如此,如果将其IsPersistent
标志设置为true
,您将注意到Cookie过期时间现在与票据相同:
SessionSecurityToken token = new SessionSecurityToken(myClaimsPrincipal, TimeSpan.FromDays(1));
token.IsPersistent = true;
好的,很好,谢谢。如果我希望用户在一天内不必再次登录(无论浏览器是否关闭),我是否需要将cookie和令牌到期时间都设置为1天?我假设令牌颁发者会自动执行此操作,因为它们都具有相关的性质?您能否提供有关这两个属性为何不会自动链接的详细信息?例如,cookie与令牌保持一致?当然,如果令牌被写入cookie,那么cookie应该自动与令牌timespan保持一致,因为只有两个对象组合在一起才能提供有效的ClaimsEntity?