如何在.NET MVC应用程序中配置此授权方案?我正在尝试设置一个演示,以编程方式向当前User对象添加一些角色 . 我有一个用以下AuthorizeAttribute修饰的控制器方法:

[Authorize(Roles = "AppAdmin")]
public ActionResult Index()
{
   //do some stuff
}

我在Web.config中配置了以下授权:

<authentication mode="Windows"/>
<authorization>
    <allow roles="AppAdmin"/>
    <deny users="*"/>
</authorization>

在Global.asax.cs中,我试图通过以下方法重定向当前User对象以进行处理,在授权之前为当前用户设置自定义角色:

public MvcApplication()
{
    var wrapper = new EventHandlerTaskAsyncHelper(SetCurrentUser);
    AddOnAcquireRequestStateAsync(wrapper.BeginEventHandler, wrapper.EndEventHandler);
}

private async Task SetCurrentUser(object sender, EventArgs e)
{
    var request = ((HttpApplication)sender).Request;
    await new AuthorizationManager().SetCurrentUser(request);
}

如果我注释掉AuthorizeAttribute以及Web.config中的部分,这可以正常工作 . 但是,如果我取消注释这些内容,MVC页面将返回授权错误 . AuthorizationManager适当地将自定义角色附加到当前User对象,但似乎MVC在AuthorizationManager逻辑被命中之前处理授权 . 你能否推荐我的实现更新,它将使用我在AuthorizationManager中设置的自定义用户角色来实现MVC授权?