1

から継承した新しいコントローラーを作成し、ログインしているUmbraco AdministratorsUmbraco.Web.Mvc.UmbracoAuthorizedControllerのみに制限しようとしています。

現在のソリューションでは、ログインしている umbraco ユーザーのみのビューが表示されますが、管理者のみをフィルタリングすることはできません。

コード:

私は Composer を持っていて、ルート設定をセットアップしました:

public class ApplicationEventComposer : IComposer
{
    public void Compose(Composition composition)
    {
        RouteTable.Routes.MapRoute(
            name: "ITTest",
            url: "umbraco/backoffice/ITTest/{action}/{id}",
            defaults: new { controller = "ITTest", action = "Index", id = UrlParameter.Optional }
        );
        composition.Register<ITTestController>(Lifetime.Request);
    }
}

私はコントローラーを持っています:

public class ITTestController : Umbraco.Web.Mvc.UmbracoAuthorizedController
{
   public ActionResult Index()
   {
       return View("/Views/ITTest/Index.cshtml");
   }
}

次のような管理者のみをフィルタリングするために、さまざまな属性を追加しようとしました。

[UmbracoAuthorize(Roles = "admin")]
[UmbracoApplicationAuthorize(Roles = "admin")]
[AdminUsersAuthorize]

「管理者」、「管理者」、「管理者」、「管理者」などのさまざまな役割を試しましたが、何も機能しないようです。

(補足: 現時点では、回避策を考えてOnAuthorizationイベントを上書きしていますが、それは適切な解決策というよりもハックのようなものです。)

質問:

  • Umbraco ロールを使用してユーザーをフィルタリングするにはどうすればよいですか?
  • 役割名は正確には何ですか? それらはユーザーグループ名ですか、それとも何か他のものですか?

アップデート:

(以下の回答を改善しようとしましたが、拒否されたので、ここに調査結果を追加します)

そいつ[Authorize(Roles = "admin")]は働いてる!

私はそれで遊んでいました。それを機能させるには、「umbraco/backoffice」の下にある必要がありますが、そうである必要はありませんUmbracoAuthorizedController(のみ)RenderMvcController

組み込みのロール名は次のとおりです。

  • 「管理者」
  • 「機密データ」
  • 「翻訳者」
  • 「ライター」
  • "編集者"

詳細情報: https://our.umbraco.com/forum/using-umbraco-and-getting-started/99651-limit-umbracoauthorizedcontroller-to-umbraco-admin-users-only#comment-313527

4

2 に答える 2