ASP.NET MVC用户身份验证到期时间

问题描述:

如何通过AJAX调用返回用户身份验证到期时间?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值。

+0

不会使额外的请求范围的到期时间? – epignosisx 2012-02-03 17:34:08

+0

即使扩展,除了请求Web服务器外,没有其他方法可以获取某些数据。但到期是绝对值,并且自上次请求时间以来不计算。 – 2012-02-03 21:51:14

+1

HttpContext.Request.Cookies [“。ASPXAUTH”]。Expires.ToString() - 不断返回一个值= DateTime.MinValue,所以我使用了FormsAuthentication.Decrypt(HttpContext.Request.Cookies [“。ASPXAUTH”]。值).Expiration.ToString()但你能确认这是一样的吗? – drunkcamel 2012-02-04 00:06:35