MVC2:确定重定向到登录是由于表单身份验证超时?

时间:2010-08-11 14:45:58

标签: asp.net-mvc timeout forms-authentication

检测何时由于表单身份验证超时而导致重定向到登录页面以显示有意义的消息的最佳方法是什么?

<authentication mode="Forms">
    <forms loginUrl="~/Login" timeout="15" slidingExpiration="true"/>
</authentication>

2 个答案:

答案 0 :(得分:1)

在摆弄了一段时间之后,我想出了这个可行的hackish解决方案。我很想听到更优雅的解决方案。

1)在表单身份验证后创建一个cookie:

   // log the user in
   FormsService.SignIn(userId, false);
   Response.Cookies["WasLoggedIn"].Value = "true";

2)在登录GET操作中,查找现有的cookie和不存在的身份验证cookie:

   if (Request.Cookies[".ASPXAUTH"] == null && 
       Request.Cookies["WasLoggedIn"] != null)
   {
      // forms authentication timed out
   }

答案 1 :(得分:0)

没有任何开箱即用的功能可以帮助您实现这一目标。例如,您可以编写一个自定义Authorize属性来检查身份验证cookie是否已过期。