本文摘自PHP中文网,作者Y2J,侵删。
这篇文章主要介绍了Asp.net 中mvc 实现超时弹窗后跳转功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下为了实现保持登录状态,可以用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代码实例的详细内容!
相关阅读 >>
怎么操作 asp.net web api ?
解决win7安装visual studio 2015失败的方法
什么是asp.net MVC ?总结asp.net MVC
asp.net core 返回 json datetime 格式
在asp.net中实现des加密与解密md5加密功能介绍
详细介绍一款.net代码编辑控件(icsharpcode.texteditor)
浅析asp.net使用image/imagebutton空间显示本地图片的方法
极客学院asp.net视频教程的资料推荐
asp.net禁用页面缓存的方法总结
分享asp.net学习笔记(2)--webpages 介绍
更多相关阅读请进入《MVC》频道 >>
清华大学出版社
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。
转载请注明出处:木庄网络博客 » 实现超时弹窗后跳转功能的asp代码实例