我创建了一个新的控制器,该控制器继承自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
事件,但这比真正的解决方案更像是黑客。)
问题:
更新:
(我尝试改善下面的答案,但被拒绝了,所以我将在这里添加我的发现)
[Authorize(Roles = "admin")]
正在工作!
我正在玩它。要使其正常运行,仍需要将其置于“ umbraco / backoffice”下,但不必一定是UmbracoAuthorizedController
,当它(仅)RenderMvcController
内置角色名称为:
答案 0 :(得分:0)
UmbracoAuthorizedController
控制器实际上只是向您的控制器添加了UmbracoAuthorize
属性,但是看来该属性会忽略您传递的任何角色,而只是检查访问者是否是经过身份验证的后台用户。 / p>
您可以在AuthorizeCore
方法中查看详细信息:
和其中的ValidateRequestAttempt
方法:
这不是我期望的!
要实现所需的功能,可以从Umbraco.Web.Mvc.UmbracoController
控制器继承并使用标准MVC 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组。
答案 1 :(得分:-1)
Umbraco文档:
https://our.umbraco.com/documentation/Implementation/Controllers/
建议您应该使用Invoke-Command -ScriptBlock {
Start-Process $PSScriptRoot\ServiceUI.exe
-process:TSProgressUI.exe %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe
-noprofile -windowstyle hidden -executionpolicy bypass
-command ${function:New-PopupMessage} -ArgumentList @Params
}
属性(我认为您已经尝试过),因此我将“角色”更新为Umbraco.Web.Mvc.UmbracoAuthorizeAttribute
,这样您就可以找到类似的内容:
Roles = "Administrators"