如何在.net mvc应用程序中配置此授权方案?

时间:2018-07-11 22:48:19

标签: c# .net asp.net-mvc authorization windows-authentication

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

0 个答案:

没有答案
相关问题