Я ищу «простой» способ автоматического добавления заявлений о роли к локальному пользователю для проверки моей логики авторизации; то есть, желая добавить некоторые конкретные претензии к локальному пользователю, прежде чем они будут разрешены моими контроллерами..NET Core MVC добавляет заявку на роль локального пользователя при разработке до авторизации
Я узнал, что в прошлом что-то похожее на это можно было бы сделать для контроллеров:
#if DEBUG
protected override void OnAuthorization(AuthorizationContext filterContext)
{
var roles = new[] { "role-under-test"};
HttpContext.User = new GenericPrincipal(new GenericIdentity("DebugUser"), roles);
base.OnAuthorization(filterContext);
}
#endif
Но это было до .NET Ядра, который является то, что я работаю в настоящее. Медленно я проработал свой путь к приведенному ниже коду, который, похоже, работает, но, очевидно, гораздо более сложный вопрос по сравнению с приведенным выше примером. Поэтому мой вопрос: знает ли кто-нибудь лучше - более простой способ достичь этого?
Атрибут пользовательские разрешения:
public class CustomAuthAttribute : RolesAuthorizationRequirement {
public CustomAuthAttribute(IEnumerable<string> allowedRoles) : base(allowedRoles) { }
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, RolesAuthorizationRequirement requirement) {
#if DEBUG
context.User.AddIdentity(new ClaimsIdentity(new GenericIdentity("DebugUser"), new[] {
new Claim(ClaimsIdentity.DefaultRoleClaimType, "users"),
new Claim(ClaimsIdentity.DefaultRoleClaimType, "admins")
}));
#endif
return base.HandleRequirementAsync(context, requirement);
}
}
В Startup.cs
public void ConfigureServices(IServiceCollection services) {
// ...
services.AddAuthorization(options =>
options.AddPolicy("UsersAndAdmins",
policy => policy.AddRequirements(new CustomAuthAttribute(new []{"users", "admins"}))));
}
И затем использовать его в контроллерах:
[Authorize(Policy = "UsersAndAdmins")]
public class HomeController : Controller {
// ...
Вы проверили https: // channel9.msdn.com/ Блоги/Seth-Juarez/Advanced-aspNET-Core-Authorization-with-B arry-Dorrans на канале 9. Кажется, они вам очень помогут. Это 2 видео-серии, но там много отличной информации. это на самом деле второй из двух –