虚位以待(AD)
虚位以待(AD)
首页 > 网络编程 > ASP.NET > Asp.net 中mvc 实现超时弹窗后跳转功能

Asp.net 中mvc 实现超时弹窗后跳转功能
类别:ASP.NET   作者:码皇   来源:互联网   点击:

这篇文章主要介绍了Asp net 中mvc 实现超时弹窗后跳转功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下

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

相关热词搜索: mvc 超时弹窗跳转