检查请求是否在同一个请求mvc中

时间:2014-10-03 15:21:55

标签: asp.net-mvc c#-4.0

我正在开发一个MVC应用程序,每次请求进入时我都需要做一些业务逻辑,除非请求是一个子请求IE @Html.Action("GetStuff", "Stuff")。我正在使用自定义用户对象设置HttpContextUser。

if (SkipAuthorization(filterContext))
{
     return;
}
else
{
     filterContext.HttpContext.User = GetBusinessUser()
}

SkipAuthorization的位置如下:

bool SkipAuthorization(AuthorizationContext filterContext)
{
     //blah blah
     bool isInSameRequest = (filterContext.HttpContext.User != null
                       && filterContext.HttpContext.User.Identity != null
                       && filterContext.HttpContext.User.Identity.IsAuthenticated);
    //more blah blah
    return result;
}

当使用winAuth设置服务器时,这似乎会导致错误,我想我们都学习了东西吧?

我的问题如下,是否有更好的方法来检查请求是否是一个子请求并跳过它,或者我是否必须检查用户是否为WindowsIdentity,或{{ 1}?这让我想起了我不了解的其他用户类型,以及我们的业务类型可能会发生变化。

1 个答案:

答案 0 :(得分:0)

我会使用稍微不同的方法。作为子动作的每个动作(当您调用它时为“子请求”)将使用

进行注释
[ChildActionOnly]

这可以防止用户直接调用这些操作。

在视图中渲染子操作不会触发更多请求,因此您应该没有任何其他逻辑。