我已经阅读了有关liferay的所有主题。我已经阅读了很多教程,但不幸的是我无法理解liferay权限的概念。
如果你能回答我的问题,我将不胜感激。
只有我理解liferay portlet有两种类型的权限:model
和portlet
。
例如:
<?xml version="1.0" encoding="UTF-8"?>
<resource-action-mapping>
<portlet-resource>
<portlet-name>testFCK</portlet-name>
<permissions>
<supports>
<action-key>ADD_FOO</action-key>
<action-key>VIEW</action-key>
<action-key>DO_TRICS</action-key>
</supports>
<community-defaults>
<action-key>VIEW</action-key>
<action-key>ADD_FOO</action-key>
</community-defaults>
<guest-defaults>
<action-key>VIEW</action-key>
</guest-defaults>
<guest-unsupported>
<action-key>DO_TRICS</action-key>
</guest-unsupported>
</permissions>
</portlet-resource>
<model-resource>
<model-name>me.pd.test.model.Foo</model-name>
<portlet-ref>
<portlet-name>testFCK</portlet-name>
</portlet-ref>
<permissions>
<supports>
<action-key>DELETE</action-key>
<action-key>UPDATE</action-key>
<action-key>VIEW</action-key>
</supports>
<community-defaults>
<action-key>VIEW</action-key>
</community-defaults>
<guest-defaults>
<action-key>VIEW</action-key>
</guest-defaults>
<guest-unsupported>
<action-key>UPDATE</action-key>
<action-key>DELETE</action-key>
</guest-unsupported>
</permissions>
</model-resource>
</resource-action-mapping>
我可以使用:
<action-key>ADD_FOO</action-key>
<action-key>VIEW</action-key>
<action-key>DO_TRICS</action-key>
在我的portlet类中检查用户是否有权执行以下操作:
try {
PortletPermissionUtil.check(themeDisplay.getPermissionChecker(), plid, PortalUtil.getPortletId(actionRequest), "ADD_FOO");
} catch(PrincipalException e){
System.out.println("NO ADD_FOO ACTION");
}
什么是
<community-defaults>
<action-key>VIEW</action-key>
<action-key>ADD_FOO</action-key>
</community-defaults>
<guest-defaults>
<action-key>VIEW</action-key>
</guest-defaults>
表示?我创建了一个社区并向其添加用户(user1),当我检查用户是否允许时,他没有使用它。我应该在哪里使用支票?
在STORE enty基础之前或之后使用addResources有很多例子:
resourceLocalService.addResources(foo.getCompanyId(),
foo.getGroupId(), foo.getUserId(),
Foo.class.getName(),
foo.getPrimaryKey(), false,
true, true);
我为什么要使用它,以下3个参数的含义是什么?我无法理解他们向社区或访客提供的许可?
ResourceLocalServiceUtil.addResources(
entry.getCompanyId(), entry.getGroupId(), entry.getUserId(),BlogsEntry.class.getName(), entry.getPrimaryKey().toString(),
false,
addCommunityPermissions,
addGuestPermissions);
addResources
如何影响我的托管权限?
我如何使用<model-resource>
的动作以及何时使用它?
提前谢谢。
祝你好运
答案 0 :(得分:0)
相关片段是分配给某些用户类型以对资源执行某些操作的默认权限。资源(如ResourceLocalServiceUtil
等)是数据库中其他真实对象的扩展(例如JournalArticle
,或者在您的示例中为me.pd.test.model.Foo
)。因此,资源具有Liferay管理的权限(即对资源类型对象执行操作的权限)。
虽然您的对象可能有groupId
或companyId
,但与之相关的资源可能拥有自己的值,不幸的是,它是程序员的角色,可以使这些冗余资源值保持最新状态
community-default
(在最近的Liferay版本中重命名为site-member-defaults
)是分配给特定资源所属的社区(即网站)成员的默认权限。因此,在您的示例中,如果您在Baz社区中创建了一些Foo类型的Bar对象,则默认情况下,Baz社区的成员应被赋予对ADD_FOO
和VIEW
Bar对象的权限。也就是说,除非addCommunityPermissions
方法中的addResource
为假。
guest-default
权限类似,默认情况下仅分配给访客用户(同样,除非创建资源时addGuestPermissions
为false)。
所以这些最后的参数是boolean portletActions, boolean addCommunityPermissions, boolean addGuestPermissions)
最后两个应该已经很容易理解了 - 如果你将false
传递给他们,你实际上忽略了权限XML中定义的默认操作权限。
portletActions
告诉您是否要添加与portlet本身(true
)或portlet模型(false
)相关的权限资源。
现在我不是百分百肯定,但我认为您不应该将portletActions
传递为真,因为Liferay本身应该管理portlet权限资源。
每当你的portlet管理一些持久化对象时(想想许多portlet教程中出现的book-catalogue
portlet,你在数据库中管理书籍等),你希望通过Liferay的资源权限来管理这些对象的权限框架(您可以选择不以其他方式管理这些权限)。