MVC中的布局页中判定session是否过期跳转

Guy_Fwakes Guy_Fwakes 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
基本情况介绍:
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过期的情况,发现报错,不允许子操作执行重定向操作,查询得知模板页渲染之后不允许跳转,失败

因此我想问一下各位有没有能够提供其他的思路实现?


...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
Guy_Fwakes
.NET社区 62,272 成员 668,968 内容