В моем приложении ASP.NET Core MVC у меня есть класс, который наследуется от AuthorizeAttribute и реализует IAuthorizationFilter.
namespace MyProject.Attributes
{
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class AllowGroupsAttribute : AuthorizeAttribute, IAuthorizationFilter
{
private readonly List<PermissionGroups> groupList = null;
public AllowGroupsAttribute(params PermissionGroups[] groups)
{
groupList = groups.ToList();
}
public void OnAuthorization(AuthorizationFilterContext context)
{
var executingUser = context.HttpContext.User;
//If the user is not authenticated then prevent execution
if (!executingUser.Identity.IsAuthenticated)
{
context.Result = new StatusCodeResult((int)System.Net.HttpStatusCode.Forbidden);
}
}
}
}
Это позволяет мне украсить метод контроллера чем-то вроде [AllowGroups(PermissionGroups.Admin, PermissionGroups.Level1]
Я планирую получить имена групп из appsettings.json на основе перечисленных значений перечисления и проверить, является ли пользователь членом этих групп.
Мой вопрос: как правильно получить доступ к настройкам приложения из моего класса атрибутов?
HttpContext.RequestServices
- person Nkosi   schedule 24.10.2018