Маршрутизация ASP.NET Core MVC на основе ролей проверяет, требует ли контроллер аутентификации - PullRequest
0 голосов
/ 17 сентября 2018

Кто-нибудь знает, есть ли способ проверить, требует ли контроллер назначения / действие аутентификации во время обработки запроса?

Для маршрутизации на основе ролей я определил ограничение (в файле Startup.cs):

app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "...",
                template: "{controller}/{action}/{id?}",
                defaults: new { controller = "...", action = "..." },
                constraints: new { xxxxx = new MyConstraint() });
            });

Теперь внутри класса MyConstraint я должен проверить, имеет ли конечный контроллер атрибут [Authorize] или он помечен как [AllowAnonymous]

public class MyConstraint : IRouteConstraint
    {
        public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection)
        {
            // need to somehow verify if the destination requires authentication or it allows anonymous [Authorize] / [AllowAnonymous]
            // because some controllers can be accessed anonymously
            return httpContext.User.IsInRole(routeKey);
        }
    }

Используемая среда: netcoreapp1.1 Microsoft.AspNetCore.Mvc 1.1.2

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