最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Asp.net 中mvc 实现超时弹窗后跳转功能

来源:动视网 责编:小采 时间:2020-11-27 22:35:56
文档

Asp.net 中mvc 实现超时弹窗后跳转功能

Asp.net 中mvc 实现超时弹窗后跳转功能:为了实现保持登录状态,可以用cookie来解决这一问题 假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写 public class PowerFilter : AuthorizeAttribute { public override void OnAuthorization(Authoriza
推荐度:
导读Asp.net 中mvc 实现超时弹窗后跳转功能:为了实现保持登录状态,可以用cookie来解决这一问题 假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写 public class PowerFilter : AuthorizeAttribute { public override void OnAuthorization(Authoriza


为了实现保持登录状态,可以用cookie来解决这一问题

假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写

 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);
 }
 }
 }

但是页面直接跳转了,也没有一个提示,显得不是很友好,可以这样

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请求呢?

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 实现超时弹窗后跳转功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

文档

Asp.net 中mvc 实现超时弹窗后跳转功能

Asp.net 中mvc 实现超时弹窗后跳转功能:为了实现保持登录状态,可以用cookie来解决这一问题 假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写 public class PowerFilter : AuthorizeAttribute { public override void OnAuthorization(Authoriza
推荐度:
标签: 之后 实现 跳转
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top