MVC中的布局页中判定session是否过期跳转
基本情况介绍:
1 _Layout.cshtml中使用
动态生成菜单
2 菜单生成方法对应的代码
3 过滤器代码
问题:
1 我想要尝试在业务页面bll/index.cshtml(使用_layout.cshtml作为布局页)加载之前判断session是否过期,做了以下两个方面的尝试
1.1 在bllController的index的action之前添加自定义过滤器 [CheckLoginFilter],发现页面菜单加载在_layout.cshtml中就开始了,也就说布局页的渲染要比子页面的早,失败
1.2 我尝试在动态生成菜单分布页方法CommonController/_Siderbar的action添加 [CheckLoginFilter],手动测试seesion过期的情况,发现报错,不允许子操作执行重定向操作,查询得知模板页渲染之后不允许跳转,失败
因此我想问一下各位有没有能够提供其他的思路实现?
1 _Layout.cshtml中使用
@Html.Action("_Sidebar", "Common");动态生成菜单
2 菜单生成方法对应的代码
//使用过滤器判断session
[CheckLoginFilter]
public ActionResult _SideBar()
{
List<INFO_Form> list = new List<INFO_Form>();
INFO_USER _user = Session["CurrentUser"] as INFO_USER;
list = GetFormByUser(_user);
return PartialView(new SiderBarViewModel() { Forms = list, User = _user });
}
3 过滤器代码
public class CheckLoginFilterAttribute : AuthorizeAttribute,IAuthorizationFilter
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
// base.OnAuthorization(filterContext);
if(filterContext.HttpContext.Session["CurrentUser"] == null)
{
filterContext.Result = new RedirectResult("~/Login.html");
}
}
}
问题:
1 我想要尝试在业务页面bll/index.cshtml(使用_layout.cshtml作为布局页)加载之前判断session是否过期,做了以下两个方面的尝试
1.1 在bllController的index的action之前添加自定义过滤器 [CheckLoginFilter],发现页面菜单加载在_layout.cshtml中就开始了,也就说布局页的渲染要比子页面的早,失败
1.2 我尝试在动态生成菜单分布页方法CommonController/_Siderbar的action添加 [CheckLoginFilter],手动测试seesion过期的情况,发现报错,不允许子操作执行重定向操作,查询得知模板页渲染之后不允许跳转,失败
因此我想问一下各位有没有能够提供其他的思路实现?
...全文
相关推荐
Java Web实现session过期后自动跳转到登陆页功能【基于过滤器】
主要介绍了Java Web实现session过期后自动跳转到登陆页功能,涉及java过滤器针对session的判断与跳转相关操作技巧,需要的朋友可以参考下
J简单的springmvc包括拦截、session设置,超时跳转
简单的springmvc包括拦截、session设置,超时跳转,还没利用到springmvc的注解,有熟悉注解的朋友望指教,谢谢
详解springmvc控制登录用户session失效后跳转登录页面
本篇文章主要介绍了springmvc控制登录用户session失效后跳转登录页面,session一旦失效就需要重新登陆,有兴趣的同学可以了解一下。
Ajax Session失效跳转登录页面的方法
主要介绍了Ajax Session失效跳转登录页面的方法,非常不错具有参考借鉴价值,感兴趣的朋友一起看下吧
退出页面自动清除session技巧
退出页面自动清除session技巧


