基本情况介绍:
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过期的情况,发现报错,不允许子操作执行重定向操作,查询得知模板页渲染之后不允许跳转,失败因此我想问一下各位有没有能够提供其他的思路实现?
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过期的情况,发现报错,不允许子操作执行重定向操作,查询得知模板页渲染之后不允许跳转,失败因此我想问一下各位有没有能够提供其他的思路实现?
[Authorize]
表单认证,认证不过时会跳那个登录地址,在webconfig里设置
2.如果要自己弄的话 也是写一个类似的特性.
你可以试试返回一个正常的套用母版页的VIEW,而不是一个PARTIALVIEW.