我希望能够获得一些强类型的方式来了解正在执行的操作。
为了澄清我正在做 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 )
{
....
}