.net 4.5 アプリケーションにクレーム ベースのセキュリティを実装しています。ジャンプするフープがたくさんありますが、基本的には機能しています。
私が気に入らない唯一の部分は、独自の属性を作成できないことです。ClaimsPrincipalPermissionAttribute は封印されています。なんで?
私は常にアプリケーション全体で次のようにマークしています。
[ClaimsPrincipalPermission(SecurityAction.Demand, Resource = "Foo", Operation = "Bar")]
また、リソースと操作の文字列のつづりを間違えないようにし、簡単にリファクタリングできるようにしたいので、これを実行できるようにクラスを作成しました。
[ClaimsPrincipalPermission(SecurityAction.Demand, Resource = Resources.Foo, Operation = Operations.Foo.Bar)]
(リソースによって操作が異なる場合があるため、操作自体はリソースによってサブクラス化されることに注意してください。)
これはすべてうまく機能しますが、毎回入力したり、コピー/貼り付けしたりするのは大変です。私はむしろ次のようなことをしたい:
[DemandPermission(Resources.Foo, Operations.Foo.Bar)]
この属性を作成することはできますが、ClaimsPrincipalPermissionAttribute から継承する必要がありますが、シールされているため作成できません。:(
これにアプローチする他の方法はありますか?おそらく継承する必要はありませんが、独自の属性タイプを登録して、すべて同じ場所で機能するようにすることはできますか?