ここに私がしたことがあります...
私は自分の権限データベースを動かすことにしたので、文字列を「型付き」に変換してコンパイル時の警告を得ることができ、名前を変更することができましたデータベースのパーミッションと、すべてのプロダクションコードを更新する必要はありません。属性は文字列ベース(いわゆるマジック文字列)なので、列挙型ではなく、データベースを読み込んで各レコードの構造体を生成するT4スクリプトを使用しました。これにより、素晴らしい表示名、アクセス許可の詳細、ユーザーに表示できるエラーメッセージなどを追加することもできました。
T4テンプレートを実行した後のアクセス許可の行の例を示します。
public struct CanViewClaimData
{
// Using const allows the compiler to generate the values in the assembly at compile time and satisfy MVC Authorize Attribute requirements for const strings.
public const System.String Name = "CanViewClaimData";
public const System.String DisplayName = "Can View Claim Data";
public const System.String Description = "The allows users to view claim data";
public const System.String DefaultErrorMessage = "You must have the \"Can View Claim Data\" permission to access this feature.";
}
その後のコードで、私は承認分類サブを使用し、各自動ビルド時に続いて、このような、
[Security.AuthorizedAttribute(Roles = CanViewClaimData.Name, Message = CanViewClaimData.DefaultErrorMessage)]
としてアクションをマークし、私たちのC.I.にプッシュ環境では、T4テンプレートをビルドプロセスの一部として実行して、構造体ストリングをデータベースと同期させて保持します。
これまでのところ、これは本当にうまくいっていて、私のプロダクトオーナーに、開発者が関与しなくても、データベース内の権限名や説明などを編集できるようになりました。
enumを使用する方法はいくつかありますか? –
申し訳ありませんが、他の方法はありません。この場合、ConstantはEnumと非常によく似ています。 – Win