から継承した新しいコントローラーを作成し、ログインしている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
組み込みのロール名は次のとおりです。
- 「管理者」
- 「機密データ」
- 「翻訳者」
- 「ライター」
- "編集者"