我们花了两个小时才完成上述目标。困难的部分是允许前端的匿名用户查看菜单小部件,但不能查看也无法访问新的安全页内容类型。
我们的解决方案确实有效。
我们想知道的是,"还有更好的方法吗?"和"需要在内容类型级别和菜单小部件的小部件实例上设置权限是什么?"
首先,我们创建了一个新的安全页面内容类型。然后我们设置以下权限。
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的权限。此外,是否有更合适的方式来实现我们的最终目标?
答案 0 :(得分:1)
为什么我们需要在内容类型级别和Widget实例级别设置Menu Widget的权限?
因为每个模块都提供了自己的一组权限(在本例中是Orchard.Widgets模块)。
此外,是否有更合适的方法来实现我们的最终目标?
我会使用自定义部件,您可以选择可以访问内容的用户角色。我有一个类似的有效性检查任务here。