2

好的,我显然遗漏了一些东西,因为这应该很简单。我创建了以下属性:

[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(...) { ... }

但是,它永远不会被调用。我错过了什么?

4

1 回答 1

4

属性本身不会做任何事情。需要一些代码来查找该属性并对其进行处理。

基于代码示例,您希望在 ASP.Net MVC 应用程序中执行一些按身份验证。在这种情况下,您应该从 MVC 的AuthorizeAttribute派生您的属性。如果您需要在 MVC 站点中进行更一般的处理 - 基本FilterAttribute甚至 IMvcFilter 提供更多选项。

于 2013-01-28T22:45:20.197 回答