6

独自の[Authorize]属性を作成しようとしているので、独自の承認ロジックを使用して階層的な役割を持たせることができます。

誰かが[Authorize(Roles = "Admin")]コントローラーまたはアクションを実行した場合、AuthorizeCore関数で文字列「Admin」を取得するにはどうすればよいですか?

私はこのコードを使用しています:

public class Authorize : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        //authorize role logic
            if (true)
                return true;

        return false;
     }
    }

MVC4、.net 4.5、c#、VS 2012

4

3 に答える 3

9

それはあなたが直面した一般的なことをやめます。

ポストでのこの推奨事項は、MVC 3で機能しているのでMVC4でも機能するはずです。-ASP.NETMVC-ロールプロバイダーの代替?

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        bool isAdmin;
        if(Roles.Contains("Admin"))
           isAdmin = true;

        return isAdmin ;
    }
于 2012-12-13T21:35:08.223 に答える
1

Rolesは公共の財産です。あなたはこれを行うことができるはずです:

public class Authorize : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {

        if(Roles.Contains("MyRole"))
           return true;

        return false;
    }
}

またはあなたがする必要があることは何でも

于 2012-12-13T21:35:30.397 に答える
0

許可されたロールのリストを取得する必要がある場合は、Rolesプロパティを取得するだけです。属性装飾で指定された文字列が一覧表示されます。

public class Authorize : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var allowedRoles = Roles;
    }
}

これは、AuthorizeAttribute定義で確認できます

于 2012-12-13T21:43:33.553 に答える