当会话状态超时在asp.net mvc中完成时,如何重定向到登录页面

前端之家收集整理的这篇文章主要介绍了当会话状态超时在asp.net mvc中完成时,如何重定向到登录页面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ASP.NET MVC4应用程序,我正在实现的sessionTimeout像:
<configuration>
  <system.web>
    <sessionState timeout="2"></sessionState>
  </system.web>
</configuration>

并在验证中:

<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/logon" timeout="1" />
    </authentication>
  </system.web>
</configuration>

会话已过期(2分钟)后,我需要重定向登录页面,但重定向不会发生。

如何更改代码以便重定向

解决方法

一种方法就是这样
在会话过期的情况下,在每个操作中,您必须检查其会话,如果它为空,则重定向登录页面

但这是非常忙碌的方法
为了完成这一切,您需要创建自己的ActionFilterAttribute,这将执行此操作,您只需要在每个操作方法添加属性

这是覆盖ActionFilterAttribute的类。

public class SessionExpireFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpContext ctx = HttpContext.Current;

            // check if session is supported
            CurrentCustomer objCurrentCustomer = new CurrentCustomer();
            objCurrentCustomer = ((CurrentCustomer)SessionStore.GetSessionValue(SessionStore.Customer));
            if (objCurrentCustomer == null)
            {
                // check if a new session id was generated
                filterContext.Result = new RedirectResult("~/Users/Login");
                return;
            }

            base.OnActionExecuting(filterContext);
        }
    }

然后在操作中只需添加如下属性

[SessionExpire]
public ActionResult Index()
{
     return Index();
}

这会让你工作。

猜你在找的asp.Net相关文章