自定义授权属性ASP.NET WebApi-空角色

时间:2019-10-21 18:12:39

标签: c# authentication asp.net-web-api authorization authorize-attribute

我正在尝试实现自定义授权,并且无​​法通过属性获得角色。如果我运行我的代码,它将击中BasicAuth类,但无法获得任何角色值。我什至尝试为该类创建一个新的“ AllowedRoles”属性,但这也不起作用。我究竟做错了什么?如何通过自定义属性传递值?

   public class BasicAuthAttribute : AuthorizeAttribute 
    {
        private const string Realm = "my.api.com";

        public override void OnAuthorization(HttpActionContext actionContext)
        {
            var r = Roles; // NULL?


            //more code that's not relevant

        }

   public class ValuesController : ApiController
    {
        // GET api/<controller>
        [BasicAuth(Roles = "admin")]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }

   public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }

    }

   public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            // Basic Auth Attribute
            config.Filters.Add(new BasicAuthAttribute());
        }
    }



0 个答案:

没有答案