Asp.net MVC 、Extjs 解决Session过期跳到登录界面的问题

1、首先在LoginController里建一个退出方法如下:

        public ActionResult LoginOut()
        {
            return View();
        }

在Views里建一个视图LoginOut.cshtml:  添加如下js即可

<script type="text/javascript">
        window.top.location.href = "/Login/Index";

 </script>

2、再自定义一个过滤器,继承自AuthorizeAttribute

public class MyAuthorizationFilterAttribute : AuthorizeAttribute//,IActionFilter

{

   public override void OnAuthorization(AuthorizationContext filterContext)
        {

       if (filterContext.RouteData.Values["Controller"].ToString() == "Login")
              {
                //如果是登录页面,则什么都不做
              }

       else
              {
                  //非登录页面,则验证权限
                  if (filterContext.HttpContext.Session["userinfo"] == null)
                  {
                      if (!filterContext.HttpContext.Request.IsAjaxRequest())
                     {
                          filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { Controller = "Login", Action = "LoginOut" }));
                      }
                      else
                      {
                          filterContext.HttpContext.Response.AddHeader("_timeout", "true");
                          filterContext.RequestContext.HttpContext.Response.End();
                      }
                  }
              }

    }

 }

3、在Scripts里面建一个timeout.js,内容如下:

Ext.Ajax.on('requestcomplete', function (conn, response, options) {
    if (response && response.getResponseHeader && response.getResponseHeader('_timeout')) {
        window.top.location.href = "/Login/Index";
    }
});

4、在_Layout.cshtml引用timeout.js即可。

5、将自定义的过滤器进行如下添加即可。

 

注:requestcomplete是Extjs中的Ajax的一个event,表示当一次请求成功完成时触发此事件

以上方法能解决Session过期跳到登录界面的问题,但感觉有点复杂。不知有木有啥简单的方法,求共享。

转载于:https://www.cnblogs.com/leixin-nation/p/4332714.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值