アプリのロールベースのセキュリティに取り組んでおり、基本的にカスタマイズされたバージョンの MVC を実行したいと考えていますAuthorizeAttribute
が、MVC にリンクしていないビジネス ロジック レイヤーでのみ実行します。
見ましたPrincipalPermissionAttribute
が、封印されているのでカスタマイズする方法はないようです。複数の属性を使用せずにロールのリストのメンバーシップをチェックできるカスタム バージョンを作成し、ロール メンバーシップを探す場所を定義したいだけです。
私が行方不明になっている.Netにこのようなものはありますか? または、ASP.Net の AuthorizeAttribute/RoleProvider/etc を再実装せずにこれを行う方法について洞察を持っている人はいますか?
編集
私は現在、命令型バージョンを実行していますが、メソッド/クラスの上にある方が見やすいので、宣言型属性バージョンを使用したいと考えています。
現在、ビジネス層の抽象基本クラスに次のものがあります。
protected void EnsureEditorLevelAccess()
{
var allowedRoles = new[]
{
Roles.Administrator,
Roles.Editor,
};
var roles = GetAccountRoles(GetCurrentUsername());
if (roles.Any(role => allowedRoles.Contains(role)))
{
return;
}
throw new SecurityException("You do not have sufficient privileges for this operation.");
}
ロール名がひどいので(Active Directoryグループベース...)などを使用できるのが好きなRoles.Administrator
ので、クラス/メソッドの上に配置できるカスタム属性のコンストラクターにそれらの詳細をラップすることを考えていました.
GetAccountRoles
これは、AD またはデータベースを使用するテスト バージョンのいずれかを使用するように設定できます。
をサブクラス化できAttribute
ましたが、セキュリティ チェックを開始する方法がわかりません。