c# - 仅将 UmbracoAuthorizedController 限制为 Umbraco 管理员用户
问题描述
我创建了一个新控制器,继承自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
内置角色名称是:
- “行政”
- “敏感数据”
- “译者”
- “作家”
- “编辑”
解决方案
UmbracoAuthorizedController
控制器实际上只是将属性添加UmbracoAuthorize
到您的控制器,但似乎此属性忽略了您传入的任何角色,并且只是检查访问者是经过身份验证的后台用户。
您可以在以下方法中详细看到这一点AuthorizeCore
:
和ValidateRequestAttempt
方法:
这不是我所期望的!
要实现您的要求,您可以从控制器继承并使用标准 MVC属性Umbraco.Web.Mvc.UmbracoController
对其进行装饰。Authorize
我已经在 Umbraco 8.2.0 中成功测试了以下内容:
public class ITTestController : Umbraco.Web.Mvc.UmbracoController
{
[Authorize(Roles = "someGroup")]
public ActionResult Index()
{
return View("/Views/ITTest/Index.cshtml");
}
}
someGroup
您希望允许的 Umbraco 组在哪里。
推荐阅读
- ios - 这是我在 Swift 中不明白的一件事
- node.js - neo4j 是否有可能限制收集的数据?
- jsf - 需要帮助更新旧的 JSP 代码。tableData 标签中的对象类型
- php - 在 Wordpress 自定义主题上获取 ajax 请求时出现错误 400
- python - python spacy 向后查找块(在引用之前)
- ns2 - 如何实现代码路由 Connectivity Aware Routing 和 Greedy Perimeter Coordinator Routing
- ios - 如何使 UIBezierPath 从中心填充
- oracle - 计数返回 <
> 当没有什么可以分组时 - c - 使用 C 实现张量乘法,对应于 TensorFlow 的“mat_mul”操作
- angular - 角响应形式,用数组值更新控件