ASP.NET MVC用户身份验证到期时间
答
操作:
[HttpGet]
public ActionResult AuthenticationExpiration()
{
return Content(HttpContext.Request.Cookies[".ASPXAUTH"].Expires.ToString();)
}
查看:
@Ajax.ActionLink("get time", "AuthenticationExpiration", new AjaxOptions{ HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "expirationTimeBox"})
<span id="expirationTimeBox"></span>
更新1
留心你的窗体身份验证的配置:
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="Login" protection="All" timeout="500" slidingExpiration="true">
</forms>
</authentication>
如果将您的slidingExpiration属性设置为true,则Cookie将延长。
更新2
我找到了过期的不断DateTime.Min价值的解决方案:http://forums.asp.net/p/1158239/1920541.aspx#1920541
更新3
对不起,从一开始我被弄得目标得到有效日期通过使用ajax调用。正如我们所见,这是错误的解决方案。多种天然和正确会使用JavaScript的工作,但它是不可能的,如果相信我所看到的:
Reading cookie expiration date
c# Asp.net getting Cookie expiration time set in javascript always returns 01.01.0001
我所看到的唯一的解决办法就是设置有效期当您拨打FormsAuthentication.SetAuthCookie(userName, isPersistent);
至DateTime.Now + new TimeSpan(//... your expiration, that's in web.config);
时,.ASPXAUTH Cookie将分开Cookie值。
不会使额外的请求范围的到期时间? – epignosisx 2012-02-03 17:34:08
即使扩展,除了请求Web服务器外,没有其他方法可以获取某些数据。但到期是绝对值,并且自上次请求时间以来不计算。 – 2012-02-03 21:51:14
HttpContext.Request.Cookies [“。ASPXAUTH”]。Expires.ToString() - 不断返回一个值= DateTime.MinValue,所以我使用了FormsAuthentication.Decrypt(HttpContext.Request.Cookies [“。ASPXAUTH”]。值).Expiration.ToString()但你能确认这是一样的吗? – drunkcamel 2012-02-04 00:06:35