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



我正在开发一个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还是MyCustomUser?这在我脑海中留下了一个危险信号,即我不知道还有哪些其他用户类型,我们的业务类型可能会改变。

我会使用稍微不同的方法。每个作为子操作的操作(您称之为"子请求")都会用进行注释

[ChildActionOnly]

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

在视图中呈现子操作不会触发更多的请求,因此在没有任何额外逻辑的情况下应该可以。

最新更新