どのアクションが実行されているかを知るための、強く型付けされた方法を取得できるようにしたいと思います。
ユーザーが特定のアクションに対する権限を持っている場合にのみ、特定のアクションへのアクセスを許可するAOPを実行していることを明確にするため。
チェックするルールを決定するために文字列を使用する場合の問題は、一部の開発者がアクションの名前を変更しても、ルールが壊れていることを示すコンパイルエラーが発生しないことです。
何か案は??
どのアクションが実行されているかを知るための、強く型付けされた方法を取得できるようにしたいと思います。
ユーザーが特定のアクションに対する権限を持っている場合にのみ、特定のアクションへのアクセスを許可するAOPを実行していることを明確にするため。
チェックするルールを決定するために文字列を使用する場合の問題は、一部の開発者がアクションの名前を変更しても、ルールが壊れていることを示すコンパイルエラーが発生しないことです。
何か案は??
チェックを実行する属性を開発します。必要なオプションを指定して、保護するアクションに属性を適用します。問題のアクションが存在し、属性で装飾されていることを確認する単体テストを記述します (適切なオプションを使用)。属性では、現在のユーザーが属性のオプションで構成されたテストに合格するかどうかだけで、実行中のアクションを知る必要はありません。
私は AuthorizeAttribute から派生させた、まさにこの種のことを行ういくつかの異なる属性を持っています。
public class RequiresEmailAttribute : AuthorizeAttribute
{
... implements the logic to test whether the current user
... has an email address and redirects to error view if no
... email address is found
}
[RequiresEmail]
public ActionResult SendEmail( string to )
{
....
}