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 に答える