如何实现Asp.net MVC中设置超时后自动弹窗并跳转至指定页面的功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计589个文字,预计阅读时间需要3分钟。
为了实现保持登录状态,可以使用cookie来解决这个问题。假设设置cookie的有效期为30分钟,以下是一个简单的示例代码,展示如何在Java中使用过滤器来处理授权:
javapublic class PowerFilter extends AuthorizeAttribute { public override void OnAuthorization(IAuthorizationFilterContext context) { // 检查cookie是否存在 if (context.Request.Cookies[userSession] !=null) { // 解析cookie中的用户信息 String userId=context.Request.Cookies[userSession].Value; // 在服务器端验证用户身份 if (authenticate(userId)) { // 验证成功,允许访问 context.Result=new AuthorizeResult(); } else { // 验证失败,重定向到登录页面 context.Result=new RedirectResult(/login); } } else { // cookie不存在,重定向到登录页面 context.Result=new RedirectResult(/login); } }
private boolean authenticate(String userId) { // 这里应该实现用户身份验证逻辑 // 例如,检查用户是否在数据库中,密码是否正确等 // 返回true表示验证成功,false表示验证失败 // 为了示例,这里假设所有用户都验证成功 return true; }}
为了实现保持登录状态,可以用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 实现超时弹窗后跳转功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对易盾网络网站的支持!
本文共计589个文字,预计阅读时间需要3分钟。
为了实现保持登录状态,可以使用cookie来解决这个问题。假设设置cookie的有效期为30分钟,以下是一个简单的示例代码,展示如何在Java中使用过滤器来处理授权:
javapublic class PowerFilter extends AuthorizeAttribute { public override void OnAuthorization(IAuthorizationFilterContext context) { // 检查cookie是否存在 if (context.Request.Cookies[userSession] !=null) { // 解析cookie中的用户信息 String userId=context.Request.Cookies[userSession].Value; // 在服务器端验证用户身份 if (authenticate(userId)) { // 验证成功,允许访问 context.Result=new AuthorizeResult(); } else { // 验证失败,重定向到登录页面 context.Result=new RedirectResult(/login); } } else { // cookie不存在,重定向到登录页面 context.Result=new RedirectResult(/login); } }
private boolean authenticate(String userId) { // 这里应该实现用户身份验证逻辑 // 例如,检查用户是否在数据库中,密码是否正确等 // 返回true表示验证成功,false表示验证失败 // 为了示例,这里假设所有用户都验证成功 return true; }}
为了实现保持登录状态,可以用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 实现超时弹窗后跳转功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对易盾网络网站的支持!

