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