2016-02-24 5 views
9

2つ以上のポリシーに対して承認を適用することは可能ですか?私はASP.NET 5、rc1を使用しています。ASP.NET 5複数のポリシーに対して承認

[Authorize(Policy = "Limited,Full")] 
public class FooBarController : Controller 
{ 
    // This code doesn't work 
} 

もしそうでない場合は、ポリシーを使用せずにどうすればよいですか?このコントローラーにアクセスできるユーザーには、「フル」と「限定」の2つのグループがあります。ユーザーは「フル」または「限定」のいずれか、またはその両方に属している可能性があります。このコントローラにアクセスするには、2つのグループのいずれかに所属する必要があります。代わりに

[Authorize(Role = "Limited,Full")] 

答えて

10

あなたが望むように役割を未使用に

+0

ポリシーが累積されている場合、カスタムポリシーを使用すると、デフォルトが置き換えられるのはなぜですか?この質問の中心は[この質問](https://stackoverflow.com/questions/44187969/why-are-unauthenticated-requests-allowed-in-custom-policies)から来ています。 私はカスタムポリシーを宣言しています。認証されていない要求が認証ハンドラに侵入しないようにします。私が使用している現在の方法は、承認ワークショップのステップ2からです(すべてのエンドポイントを承認し、必要に応じて '[AllowAnonymous]'を置く)。 反パターンのように感じますが、私はばかげているかもしれません! – steamrolla

+1

基本的には、独自のポリシーを設定している場合、自分が行っていることを知っていると仮定します。ポリシーを適用すると、デフォルトを上書きすることになります。 – blowdart

+0

。デフォルトポリシーは、カスタムポリシーコレクションの最初のポリシーのように、「ベースライン」にする必要があるように感じます。 – steamrolla

-11

てみてください。ポリシーは累積的に設計されています。たとえば、2つの別個の属性を使用する場合は、両方とも通過する必要があります。

1つのポリシー内でOR条件を評価する必要があります。 しかし、では、1つのハンドラ内でORとしてコード化する必要はありません。複数のハンドラを持つ要件を持つことができます。いずれかのハンドラが成功を示す場合、要件が満たされます。私のAuthorization Workshopのステップ6を参照してください。

+5

ロールはポリシーではありません。 – blowdart

関連する問題