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