TYPO3 - 无法通过流体继承访问权限

TYPO3 - No inheritance of access rights possible via fluid

如果 fe_group she/he 所属的子组 fe_group 被定义为该组,则可以通过 BE 授予 fe_user 访问内容的权限有权访问内容。

例如如果我定义 'Product Group 02' (uid=2) 应该可以通过 BE 访问特定内容,属于 'User Group 03' (uid=6) 的 fe_user 作为子组 [=24] =](uid=2),fe_user可以访问内容。

fe_group设置:

uid|title|subgroup
1|Product Group 01|
2|Product Group 02|
3|Product Group 03|
4|User Group 01|1
5|User Group 02|
6|User Group 03|2,3

但是如果我直接在我的流体模板中定义 {f:cObject(typoscriptObjectPath: 'lib.usergroup')} == '2' 应该可以访问内容并随后 'User Group 03',提到的 fe_user 无法访问它:

typoscript:

lib.usergroup = TEXT
lib.usergroup.data = TSFE:fe_user|user|usergroup

partial.html

<f:if condition="{f:cObject(typoscriptObjectPath: 'lib.usergroup')} == '2'">
...
</f:if>

// ...当然,如果fe_user属于'Product Group 02'他就可以访问了。

但是是否可以坚持上述 fe_group 的结构并仍然允许上述 fe_user 通过流体访问内容?

TSFE:fe_user|user|usergroup 获取用户用户组中存储的内容。在您的情况下,存储了一个 6,您将其与 2 进行比较,后者 returns false

此外,如果您为您的用户设置多个用户组,这样的解决方案可能会带来更多麻烦。在这种情况下,TSFE:fe_user|user|usergroup 将 return 以逗号分隔的用户组 uid 列表,例如 6,2,3,您的条件将再次导致 false

正确的方法是使用 f:security.ifHasRole ViewHelper。 所以,像这样的东西应该可以帮助你:

<f:security.ifHasRole role="2">
  Your stuff here
</f:security.ifHasRole>