我有视觉工作室身份的代码
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
,但这种设计不适合这种情况。那么,我如何在策略中执行OR语句,或在授权中使用OR语句来接受多个策略中的一个。