0

ちょっとアイデアはありますが、問題はこれを機能させることができないことです。

MVC[Authorize]では、いくつかのアクション/コントローラーを「保護」するために使用できます。次のステップを実行して、役割とユーザーに何らかの許可を与えることができます。

[Authorize(Roles="Boss", User="Secretary"]

これはうまく機能しますが、実生活では誰がこれに対する権利を持っているか分からないため、一種の悪いことです. そのため、ロールとユーザーの文字列を作成し、Microsoft がこれを魔法にすることを承認するというアイデアがありました。

[Authoize(Role=RoleString(), User=UserString())]

もちろん、それは機能していません。

4

1 に答える 1

0

問題は、AuthorizeAttributeがUser文字列とRole文字列の両方に定数を期待していることです。このブログ投稿にあるようなCustomAuthorizeAttributeを作成する必要があります。

したがって、次のような文字列をweb.configに保存するとします。

<add key="authorizedUsers" value="Dave,Chuck,Sally" />

次に、次のようなカスタムの承認属性があります。

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    public IAuthorizationService _authorizationService { get; set; }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var user = httpContext.User;
        if (!user.Identity.IsAuthenticated)
        {
            return false;
        }

        var users = System.Configuration.ConfigurationManager.AppSettings["authorizedUsers"].Split(',');
        if users.Contains(user.Identity.Name)
        {
            return true;
        }

        return _authorizationService.Authorize(httpContext);
    }
}

テストされていないので、これをかなり速く一緒に投げたことに注意してください。これを簡単に変更して、データベースからユーザー名またはグループ名を取得し、完全に動的にすることができます。

于 2012-04-03T19:15:47.913 に答える