56

クラス メソッドで 2 つの個別の Authorization 属性を指定するのに問題があります。2 つの属性のいずれかが true の場合、ユーザーはアクセスを許可されます。

Athorization クラスは次のようになります。

[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public class AuthAttribute : AuthorizeAttribute {
. . .

そしてアクション:

[Auth(Roles = AuthRole.SuperAdministrator)]
[Auth(Roles = AuthRole.Administrator, Module = ModuleID.SomeModule)]
public ActionResult Index() {
    return View(GetIndexViewModel());
}

これを解決する方法はありますか、それとも自分のアプローチを再考する必要がありますか?

これは MVC2 で実行されます。

4

4 に答える 4

74

asp.net の以降のバージョンでは、ロールに対して OR と AND の両方を実行できる、より良い方法があります。これは規則に従って行われ、複数の役割を 1 つの Authorize にリストすると OR が実行され、複数の Authorize 属性を追加すると AND が実行されます。

または例

[Authorize(Roles = "PowerUser,ControlPanelUser")] 

AND の例

[Authorize(Roles = "PowerUser")]
[Authorize(Roles = "ControlPanelUser")]

詳細については、次のリンクを参照して ください https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles

于 2016-09-12T08:27:45.113 に答える