我创建了一个新控制器,继承自Umbraco.Web.Mvc.UmbracoAuthorizedController
并试图将其限制为仅登录Umbraco Administrators。
我当前的解决方案仅显示登录 umbraco 用户的视图,但我无法仅过滤管理员。
代码:
我有一个作曲家,我设置了路由配置:
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
内置角色名称是:
- “行政”
- “敏感数据”
- “译者”
- “作家”
- “编辑”