2つ以上のポリシーに対して承認を適用することはできますか? ASP.NET 5、rc1を使用しています。
[Authorize(Policy = "Limited,Full")]
public class FooBarController : Controller
{
// This code doesn't work
}
そうでない場合、ポリシーを使用せずにこれをどのように達成できますか?このコントローラーにアクセスできるユーザーのグループには、「フル」と「制限」の2つのグループがあります。ユーザーは、「Full」または「Limited」、あるいはその両方に属します。このコントローラーにアクセスするには、2つのグループのいずれかに属する必要があります。
あなたが望む方法ではありません。ポリシーは累積的に設計されています。たとえば、2つの別個の属性を使用する場合、両方ともパスする必要があります。
1つのポリシー内でOR条件を評価する必要があります。しかし、内でORとしてコーディングする必要はありません。単一のハンドラー複数のハンドラーを持つ要件を持つことができますハンドラーのいずれかが成功にフラグを立てると、要件が満たされますmy Authorization Workshop のステップ6を参照してください。
新しいポリシー「LimitedOrFull」を設定したら(要求タイプ名と一致すると仮定)、次のような要件を作成します。
options.AddPolicy("LimitedOrFull", policy =>
policy.RequireAssertion(context =>
context.User.HasClaim(c =>
(c.Type == "Limited" ||
c.Type == "Full"))));
Net Coreには、同じAuthorizationRequirementタイプを持つAuthorizationHandlerを複数持つオプションがあります。これらのいずれか1つだけが承認に合格する必要があります https://docs.Microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-2.1#why-would-i- want-multiple-handlers-for-a-requirement