C# 基于角色的webapi身份验证

C# 基于角色的webapi身份验证,c#,.net,authentication,asp.net-web-api,oauth,C#,.net,Authentication,Asp.net Web Api,Oauth,我有下面的令牌生成代码,它可以在没有任何角色的情况下进行身份验证。我需要启用基于角色的身份验证: public void ConfigureOAuth(IAppBuilder app) { double timeout = Convert.ToDouble(ConfigurationManager.AppSettings["Timeout"].ToString()); OAuthAuthorizationServerOptions OAuthserverO

我有下面的令牌生成代码,它可以在没有任何角色的情况下进行身份验证。我需要启用基于角色的身份验证:

public void ConfigureOAuth(IAppBuilder app)
    {
        double timeout = Convert.ToDouble(ConfigurationManager.AppSettings["Timeout"].ToString());
        OAuthAuthorizationServerOptions OAuthserverOptions = new OAuthAuthorizationServerOptions()
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(timeout),
            Provider = new SimpleAuthorizationServerProvider()
        };

        //Token generation
        app.UseOAuthAuthorizationServer(OAuthserverOptions);
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
    }
如何对上述代码启用基于角色的身份验证

所以,在我的web api操作中,如果我设置Authorize(Roles=“Admin”),我可以允许或拒绝角色的访问


请给出建议。

您可以使用类似于以下内容的代码(假设您自doing token auth起使用API):

请注意,您将如何继承Mvc控制器中的
System.Web.Http.AuthorizeAttribute
而不是
System.Web.Mvc.AuthorizeAttribute
。此外,
HandleUnauthorizedRequest
的参数类型应为
HttpActionContext
,而不是mvc控制器中的
AuthorizationContext


现在,在您的api上,您可以使用
[WebAPI授权(Roles=“role”)]

我不在mvc中,我正在使用web api并使用Angular调用这些web api这是为web api编写的
 public class WebApiAuthorizeAttribute : System.Web.Http.AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(HttpActionContext ctx)
    {
        //unauthorized code here
    }
    //or
    protected override bool IsAuthorized(HttpActionContext actionContext)
    {
       //is authorized
    }
}