如何使用 Umbraco 基于角色的安全性制作任意页面 public

How to make arbitrary pages public using Umbraco role-based security

使用 Umbraco 7.2.6

我正在使用基于成员角色的安全性来管理 public 访问,我将整个站点设置为仅允许经过身份验证的成员(必须在 'active' role/group 中),所有页面都在主页节点下。

前端菜单中要求的登录页面和错误页面public仅供非授权用户访问,如何制作其他任意页面public?例如忘记密码页面或关于页面。

我希望内容编辑器的右键单击菜单中有 "make public" 或其他内容的选项,以便最终用户可以随意决定是否这样做,但除非我我错过了一些不存在的东西。

我尝试使用 web.config 允许匿名访问每页,但我不确定在默认 Umbraco 内容的配置设置中使用的正确路径是什么。什么是主控制器?

我也试过将不安全的页面放在主页层次结构之外,但母版页等的某些内容似乎正在尝试使用节点导航访问内容。我以为我可以通过并删除所有这些,但我不想这样做。

有这方面的经验吗?

遗憾的是,据我所知,这是不可能的。 Umbraco 保护一个页面,以及它下面的所有内容,而不给你排除某些页面的选项。更改 web.config 中的访问权限将不起作用,因为访问权限由自定义 Umbraco 代码控制。

基本上,在您站点的 App_Data 文件夹中会生成一个名为 "access.config" 的文件,其中包含访问规则,Umbraco 使用该文件来确定受保护和不受保护的内容.

我通常处理这个问题的方法是将所有受保护的内容都放在主页的子节点下,这样我就可以在受保护区域之外公开处理错误页面、密码重置等内容无障碍。您可以在导航等中调用几种与安全相关的方法来检查用户是否有权访问节点,例如

Umbraco.MemberHasAccess(id, path)

传入要对照当前用户检查的节点的 id 和路径。