MVCアプリケーションに新しいアクセス権ベースのアクセス方法を実装しようとしています。 パーミッショングループがあり、各グループにパーミッションのリストが含まれています。たとえば、CreateInvoice,RemoveInvoice,etc
パーミッションキーを含むInvoices
パーミッショングループがあります。C#の属性:enum定数を入力パラメータとして使用
このアプローチでは、各mvc Action
には実行のための特定の許可が必要です。それが簡単に開発者は、私がそのすべき権限の事前定義されたリストを作成しようとしている別のアクセス許可グループおよびアクセス許可のキーを覚えてできるようにすること
public class InvoiceController : Controller
{
[RequirePermission(Permissions.Invoices.CreateInvoice)]
public ActionResult Create()
{
return View();
}
}
:私は、CustomAttributesを介してこれを行うには、このような何かをしようとしていますパーミッショングループとパーミッションキーの組み合わせ。 C# で属性の引数を使用する際に適用される制限のため、まだ動作させることができませんでした。私の最後の試みは、各権限グループの列挙子を作成し、そこでのenum定数として許可キーを定義して(私は特大enumuratorを作り、そこ内のすべての権限キーを配置する必要はありません)
:
public class PermissionEnums
{
[PermissionGroup(PermissionGroupCode.Invoice)]
public enum Invoices
{
CreateInvoice = 1,
UpdateInvoice = 2,
RemoveInvoice = 3,
ManageAttachments = 4
}
[PermissionGroup(PermissionGroupCode.UserAccounts)]
public enum UserAccounts
{
Create = 1,
ChangePassword = 2
}
}
ご覧のとおり、PermissionGroup
属性を使用して指定された許可グループキーと、各列挙定数に数字コードとして指定された許可キーのコードがあります。以下のように定義
RequirePermission属性:
public class RequirePermissionAttribute : Attribute
{
private Enum _Permission;
public RequirePermissionAttribute(Enum Permission)
: base()
{
_Permission = Permission;
}
}
が、問題は、タイプEnum
のオブジェクトは、属性の引数として使用することができなかったということです。
どれ提案/アイデアが
うん、私はそれをやったが、私の問題は、チェックする(属性のActionFilter)属性を作成されていませんユーザーのアクセス許可。私は、あらかじめ定義されたパーミッション定数を作成するために、単純な文字列キーを使用するよりも良い方法が必要です。 – sos00
http://www.vivienchevallier。com/Articles/create-a-custom-authorizeattribute-that-accepts-parameters-of-type-enumこれを試してください。 – AdrianCogiel