好吧,我显然错过了一些东西,因为这应该很简单。我创建了以下属性:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class EntitleAttribute : Attribute
{
public EntitleAttribute(string permissionName)
{
bool hasPermission = ...
if (!hasPermission)
{
throw new HttpException(403, "Forbidden");
}
}
}
我把它放在一个方法上:
[Entitle("Access Application")]
public ActionResult MyMethod(...) { ... }
然而,它从未被调用过。我错过了什么?
答案 0 :(得分:4)
属性本身不做任何事情。需要有一些代码可以查找属性并对其执行某些操作。
基于代码示例,您希望在ASP.Net MVC应用程序中执行一些每次身份验证。在这种情况下,您应该从MVC的AuthorizeAttribute派生您的属性。如果您需要在MVC站点中进行更多一般处理 - 基础FilterAttribute或甚至IMvcFilter提供更多选项。