首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Liferay PermissionChecker返回来宾的权限,而不是站点成员的权限

Liferay PermissionChecker返回来宾的权限,而不是站点成员的权限
EN

Stack Overflow用户
提问于 2016-07-23 10:43:36
回答 1查看 132关注 0票数 0

我正在Liferay-6.2中开发一个JSF,我正在设置权限。我已经创建了我的default.xml文件,并且我认为它是工作的,因为它保存在数据库中正确的权限。此外,我认为resourceLocalService.addResources(...)正在工作,因为它还保存在数据库中正确的行,无论如何,作为管理员,我不知道它是否与我的问题有关。

我的问题是,当我试图检查一个网站成员的权限时,它拒绝给予许可,因为它是一个客人。

以下是我的default.xml的重要部分

代码语言:javascript
复制
<model-resource>
    <model-name>org.lrc.liferay.toolbuilder.model</model-name>
    <portlet-ref>
        <portlet-name>tool-builder</portlet-name>
    </portlet-ref>
    <permissions>
        <supports>
            <action-key>ADD_TOOL_DEF</action-key>
            <action-key>ADD_TOOL_INSTANCE</action-key>
        </supports>
        <site-member-defaults>
            <action-key>ADD_TOOL_INSTANCE</action-key>
        </site-member-defaults>
        <guest-defaults />
        <guest-unsupported>
            <action-key>ADD_TOOL_DEF</action-key>
            <action-key>ADD_TOOL_INSTANCE</action-key>
        </guest-unsupported>
    </permissions>
</model-resource>

因此,我认为它将这两行保存在ResourceAction表中:

代码语言:javascript
复制
| resourceActionId | name                              | actionId          | bitwiseValue |
|             2705 | org.lrc.liferay.toolbuilder.model | ADD_TOOL_DEF      |            2 |
|             2706 | org.lrc.liferay.toolbuilder.model | ADD_TOOL_INSTANCE |            4 |
|             2707 | org.lrc.liferay.toolbuilder.model | PERMISSIONS       |            4 |

当我节省我的资源时

代码语言:javascript
复制
User user = userPersistence.findByPrimaryKey(liferayFacesContext.getUserId());

resourceLocalService.addResources(user.getCompanyId(),
                toolDefDBE.getGroupId(),
                liferayFacesContext.getScopeGroupId(),
                "org.lrc.liferay.toolbuilder.model",
                toolDef.getToolDefId(), false, true, true);

如果我没有错的话,可以将它保存在数据库中:

代码语言:javascript
复制
| resourcePermissionId | companyId | name                              | primKey | roleId | ownerId | actionIds |
|                 6101 |     10154 | org.lrc.liferay.toolbuilder.model |    5201 |  10163 |   10158 |        14 |
|                 6102 |     10154 | org.lrc.liferay.toolbuilder.model |    5201 |  10170 |       0 |         4 |

根据Role_表,10163是所有者的roleId,10170是站点成员的roleId

最后,当我想检查我拥有的权限时,这是我的requestBean:

代码语言:javascript
复制
public Boolean getHasAddPermission() {
    if (this.hasAddPermission == null) {
        LiferayFacesContext liferayFacesContext = LiferayFacesContext.getInstance();
        long scopeGroupId = liferayFacesContext.getScopeGroupId();
        System.out.println("El scopeGroupId es " + scopeGroupId);
        this.hasAddPermission = liferayFacesContext.getThemeDisplay().getPermissionChecker().hasPermission
                (scopeGroupId, ToolSession.MODEL, toolSession.getToolDef().getToolDefDBEId(), "ADD_TOOL_INSTANCE");
    }
    return this.hasAddPermission;
}

但是对于一个站点成员来说,它返回的是false而不是true。有人知道我做错了什么吗?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-23 13:22:21

解决了!!问题是用户不是站点成员。Liferay使登录用户和站点成员之间发生了变化。要成为站点成员,您必须在默认情况下为新用户分配该站点的角色,或者稍后与站点所有者用户一起分配该角色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38540864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档