0

カスタム承認オブジェクトを作成せずに、Authorize Attribute のキーワード フィルターを拡張したいと考えています。

組み込みのキーワードが Roles,Users であることは知っています。新しいキーワード コール レベルを追加して、ユーザー アクセス レベルが特定のレベルを超えているかどうかを確認したいと考えています。

これにより、ユーザー用に作成されたロールを 1 つだけ持つことができます。

これの使用法は次のようになります

[Authorize(level > 1)]

私が解決しようとしている問題をよりよく理解するために追加情報が必要な場合はお知らせください。

私は見ましたが、この問題を解決できませんでした。コードサンプルを提供できますか? これが私が持っているものです。レベル フィルターを使用するとエラーが発生します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
[Auth(Level > 1)]
public ActionResult Index()
{
}

public class Auth : AuthorizeAttribute
{
    public int Level { get; set; }
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
      base.OnAuthorization(filterContext);
    }
}
4

1 に答える 1

0

これは、ビルトイン に新しいフィルターを追加するだけでは不可能AuthorizeAttributeです。から継承する新しい属性を作成する必要がありますAuthorizeAttribute

カスタムの作成に関するSOに関するブログ投稿と質問がたくさんありますAuthorizeAttributes

編集:わかりました、良いスタートです。あなたの問題は、あなたがしようとしているようにできないということですLevel > 1Levelユーザーが 1 より大きい場合に渡す認証を指定しようとしていると仮定すると、属性のプロパティを変更してこれを示すことができます。

例えば

public class Auth : AuthorizeAttribute
{
    public int MinLevel { get; set; }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        //This is where you will need to determine if the user is authorized based upon the minimum level.
        base.OnAuthorization(filterContext);
    }
}
于 2013-02-19T05:48:18.980 に答える