Пользовательский атрибут авторизации ASP.NET WebApi - пустые роли - PullRequest
1 голос
/ 21 октября 2019

Я пытаюсь реализовать пользовательскую авторизацию и не могу заставить роли пройти через атрибут. Если я запускаю свой код, он попадает в класс 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());
        }
    }



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...