创建一个安全的Orchard CMS页面,经过身份验证的用户可以访问,但匿名用户却无法访问

时间:2014-09-12 19:32:58

标签: security permissions orchardcms orchardcms-1.8

我们花了两个小时才完成上述目标。困难的部分是允许前端的匿名用户查看菜单小部件,但不能查看也无法访问新的安全页内容类型。

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

  • 匿名用户可以查看菜单小工具
  • 匿名用户可以在菜单小工具中查看内容项链接到页面。
  • 匿名用户无法在菜单小工具中查看安全页面的内容项链接。
  • 匿名用户可以在主菜单中查看任何内容的自定义链接。
  • 如果匿名用户直接导航到安全页面,系统会提示他们进行身份验证。
  • 这一切都很好。

我们想知道的是,"还有更好的方法吗?"和"需要在内容类型级别和菜单小部件的小部件实例上设置权限是什么?"

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

用户>角色(查看和访问权限)

                               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.

此时,解决方案完美无缺。

两个问题:为什么我们需要在内容类型级别和Widget实例级别设置Menu Widget的权限。此外,是否有更合适的方式来实现我们的最终目标?

1 个答案:

答案 0 :(得分:1)

  

为什么我们需要在内容类型级别和Widget实例级别设置Menu Widget的权限?

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

  

此外,是否有更合适的方法来实现我们的最终目标?

我会使用自定义部件,您可以选择可以访问内容的用户角色。我有一个类似的有效性检查任务here