登录页面的AuthorizeAttribute过滤器设置returnUrl

本文关键字:过滤器 设置 returnUrl AuthorizeAttribute 登录 | 更新日期: 2023-09-27 18:19:12

一切正常;但是,我在系统中发现的错误如下:

  1. 用户正确登录系统并浏览选项。

  2. 当用户处于给定视图时会话过期。该视图有一个按钮,该按钮发送到一个局部视图(再次,返回一个局部视图)。

  3. 一旦用户单击按钮,AuthorizeAttribute将他/她发送回带有给定returnUrl="xxx/yyy/zzz"值的登录页面。

  4. 用户重新登录,并被正确重定向到局部视图。

我的问题如下。由于用户被重定向到部分视图,他/她无法看到整个页面(菜单,页脚等->母版页的东西)。

我如何方便地检查是否returnUrl属于一个局部视图,因为在这种情况下,我可能只是重定向用户到/Home/Index

登录页面的AuthorizeAttribute过滤器设置returnUrl

首先在局部视图请求操作集ReturnUrl:

public ActionResult ReturnPartialView ()
{
   if (Request != null && Request.IsAjaxRequest())
   {
      ViewBag.ReturnUrl = Url.Action("Action", "Controller");
      .
      .
      .
   }
   return null;
}

最后在局部视图:

@using (Html.BeginForm("Action", "Controller", new { returnUrl = ViewBag.ReturnUrl }))
{
    .
    .
    .
}

如果你在寻找更有效的方法来处理这个问题,你应该覆盖授权属性,这里有一些链接可以指导你。

处理ajax调用的特定于身份验证的问题

如何处理对返回结果而不是ViewResult的操作的授权?

ASP。. NET MVC用AJAX重定向到登录页面