Кто-нибудь знает, есть ли способ проверить, требует ли контроллер назначения / действие аутентификации во время обработки запроса?
Для маршрутизации на основе ролей я определил ограничение (в файле 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