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

时间:2012-02-03 14:27:00

标签: ajax asp.net-mvc asp.net-mvc-3

如何通过AJAX调用返回用户身份验证到期时间?

1 个答案:

答案 0 :(得分:1)

动作:

[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值。