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

时间:2014-08-22 16:42:50

标签: c# asp.net-mvc action-filter

一切都很好;但是,我在系统中发现的错误如下:

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

  2. 当用户在给定视图中时,会话到期。该视图有一个发布到部分视图的按钮(再次返回部分视图)。

  3. 一旦用户点击该按钮,AuthorizeAttribute会将他/她发回给具有给定returnUrl =“xxx / yyy / zzz”值的登录页面。

  4. 用户再次登录,并被正确重定向到部分视图。

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

    如何轻松检查returnUrl是否属于部分视图,因为在这种情况下我可能只是将用户重定向到/ Home / Index。

1 个答案:

答案 0 :(得分:1)

首先在部分查看请求操作集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 }))
{
    .
    .
    .
}

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

Handling authentication-specific issues for AJAX-calls

How do you deal with authorisation on actions that return results other than ViewResult?

ASP.NET MVC redirect to login page with AJAX