Я бы добавил атрибут Authorize
с принудительной политикой, которую должны реализовать все ваши пользователи.Примерно так:
[Authorise(Policy = "MyLibPolicy")]
public class LibController : Controller
{
}
Затем, исходя из своих потребностей, они могут объявить это по-разному в своем методе Configure
:
Если им нужны аутентифицированные пользователи :
services.AddAuthorization(options =>
{
options.AddPolicy("MyLibPolicy", policy =>
{
policy.RequireAuthenticatedUser();
});
});
Если им нужна пользовательская политика :
services.AddAuthorization(options =>
{
options.AddPolicy("MyLibPolicy", policy =>
{
policy.RequireAuthenticatedUser();
policy.RequireRole("SomeRole");
// other requirements
});
});
Если им нужен анонимный доступ :
СейчасЭто сложная часть, поскольку вы не можете создать пустую политику (для политики требуется хотя бы одно требование).
Однако вы можете создать собственное пользовательское требование (в вашем пакете Nuget), чтобы разрешить анонимный доступ.пользователи (в основном, требование, которое всегда выполняется).
public class AllowAnonymousAuthorizationRequirement : AuthorizationHandler<IAuthorizationRequirement>, IAuthorizationRequirement
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, IAuthorizationRequirement requirement)
{
context.Succeed(requirement);
return Task.CompletedTask;
}
}
Затем ваши пользователи должны будут зарегистрировать его перед использованием, например:
services.AddScoped<IAuthorizationHandler, AllowAnonymousAuthorizationRequirement>();
services.AddAuthorization(options =>
{
options.AddPolicy("MyLibPolicy", policy =>
{
policy.AddRequirements(new AllowAnonymousAuthorizationRequirement());
});
});