如何在.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授权?