У меня есть этот код для визуальной студии. Идентичность
namespace BlazorBoilerplate.Shared.AuthorizationDefinitions
{
public static class Policies
{
public const string IsAdmin = "IsAdmin";
public const string IsUser = "IsUser";
public const string IsReadOnly = "IsReadOnly";
public const string IsMyDomain = "IsMyDomain";
public static AuthorizationPolicy IsAdminPolicy()
{
return new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireClaim("IsAdministrator")
.Build();
}
public static AuthorizationPolicy IsUserPolicy()
{
return new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireClaim("IsUser")
.Build();
}
public static AuthorizationPolicy IsReadOnlyPolicy()
{
return new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireClaim("ReadOnly", "true")
.Build();
}
public static AuthorizationPolicy IsMyDomainPolicy()
{
return new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddRequirements(new DomainRequirement("blazorboilerplate.com"))
.Build();
}
}
}
Это можно использовать следующим образом:
[Authorize(Policy = Policies.IsAdmin)]
Так что, если кто-то является администратором, он должен передать Policies.IsUser
, но этот дизайн не подходит для этого. Итак, как я могу сделать либо оператор ИЛИ в Политике, либо с помощью Авторизации, чтобы принять одну из нескольких политик.