为了实现保持登录状态,可以用cookie来解决这一问题
假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public class PowerFilter : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
var cookie = HttpContext.Current.Request.Cookies[ "loginInfo" ];
if ( null == cookie)
{
filterContext.Result = new RedirectResult( "/admin/login/index" );
}
else
{
cookie.Expires = DateTime.Now.AddMinutes(30);
HttpContext.Current.Response.Cookies.Remove( "loginInfo" );
HttpContext.Current.Response.Cookies.Add(cookie);
}
}
}
|
但是页面直接跳转了,也没有一个提示,显得不是很友好,可以这样
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public class PowerFilter : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
var cookie = HttpContext.Current.Request.Cookies[ "loginInfo" ];
if ( null == cookie)
{
filterContext.Result = new ContentResult()
{
Content = string
.Format( "<script>alert('登录超时,请重新登录');location.href='{0}'</script>" , "/admin/login/index" )
};
}
else
{
cookie.Expires = DateTime.Now.AddMinutes(30);
HttpContext.Current.Response.Cookies.Remove( "loginInfo" );
HttpContext.Current.Response.Cookies.Add(cookie);
}
}
}
}
|
但是,假如是ajax请求呢?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public class PowerFilter : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
var cookie = HttpContext.Current.Request.Cookies[ "loginInfo" ];
if ( null == cookie)
{
if (!filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.Result = new ContentResult()
{
Content = string
.Format( "<script>alert('登录超时,请重新登录');location.href='{0}'</script>" , "/admin/login/index" )
};
}
else
{
filterContext.Result = new JsonResult()
{
Data = new { logoff = true ,logurl = "/admin/login/index" },
ContentType = null ,
ContentEncoding = null ,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
}
else
{
cookie.Expires = DateTime.Now.AddMinutes(30);
HttpContext.Current.Response.Cookies.Remove( "loginInfo" );
HttpContext.Current.Response.Cookies.Add(cookie);
}
}
}
|
以上所述是小编给大家介绍的Asp.net 中mvc 实现超时弹窗后跳转功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://www.cnblogs.com/cheesebar/archive/2017/02/10/6386479.html