Security 创建一个安全的Orchard CMS页面,经过身份验证的用户可以访问该页面,但其他用户无法访问

Security 创建一个安全的Orchard CMS页面,经过身份验证的用户可以访问该页面,但其他用户无法访问,security,permissions,orchardcms,orchardcms-1.8,Security,Permissions,Orchardcms,Orchardcms 1.8,我们刚刚花了两个小时完成了上述目标。难点在于允许前端的匿名用户查看菜单小部件,但不查看或访问新的安全页面内容类型 我们的解决方案确实有效。 匿名用户可以查看菜单小部件 匿名用户可以在菜单小部件中查看指向页面的内容项链接。 匿名用户无法在菜单小部件中查看指向安全页面的内容项链接。 匿名用户可以查看指向主菜单中任何内容的自定义链接 如果匿名用户直接导航到安全页面,则会提示他们进行身份验证 这一切都很好 我们想知道的是,“有没有更好的方法?”和“需要在菜单小部件的内容类型和小部件实例级别设置权限是

我们刚刚花了两个小时完成了上述目标。难点在于允许前端的匿名用户查看菜单小部件,但不查看或访问新的安全页面内容类型

我们的解决方案确实有效。

  • 匿名用户可以查看菜单小部件
  • 匿名用户可以在菜单小部件中查看指向页面的内容项链接。
  • 匿名用户无法在菜单小部件中查看指向安全页面的内容项链接。
  • 匿名用户可以查看指向主菜单中任何内容的自定义链接
  • 如果匿名用户直接导航到安全页面,则会提示他们进行身份验证
  • 这一切都很好
我们想知道的是,“有没有更好的方法?”和“需要在菜单小部件的内容类型和小部件实例级别设置权限是怎么回事?”

首先,我们创建了一个新的安全页面内容类型。然后我们设置以下权限

用户>角色(查看和访问权限) 我们撤销了匿名角色的查看所有/自己的内容,然后明确地重新授予该角色对页面和投影的查看权限;我们没有重新授予安全页面的查看权限。此外,我们保留了身份验证角色的默认设置,因为默认设置包括查看所有/自己的内容,包括我们创建的新安全页面内容类型

此时的问题是,取消匿名角色的查看所有/自己的内容意味着该角色无法看到前端的菜单小部件。为了解决这个问题,我们将内容权限部分添加到菜单小部件并调整了设置

内容定义>菜单小部件>零件内容权限 奇怪的是,这还不够。在内容项级别,我们还必须设置以下权限:

小部件>特定菜单小部件>启用内容项访问控制 在这一点上,解决方案非常有效

两个问题:为什么我们需要在内容类型级别和小部件实例级别设置菜单小部件的权限。此外,有没有更合适的方式来实现我们的最终目标

为什么我们需要在内容类型级别和小部件实例级别设置菜单小部件的权限

因为每个模块都提供自己的一组权限(在本例中,例如Orchard.Widgets模块)

此外,有没有更合适的方式来实现我们的最终目标

我将使用一个自定义部分,您可以在其中选择可以访问内容的用户角色。我有一个与有效性检查类似的任务

                               Anonymous               Authenticated
View page by others               y y                       n y 
View own page                     y y                       n y 
View projection by others         y y                       n y 
View own projection               y y                       n y 
View secure page by others        n n                       n y 
View own secure page              n n                       n y 
View all content                  n n                       y y 
View own content                  n n                       n y 
View content types                n n                       n n 
Access site front end             y y                       y y 
                               Anonymous               Authenticated
View any content                  n y                       y n 
View own content                  n n                       y n 
Disable this (i.e. unchecked it)
Otherwise it overrides what we already set.