升级到 Liferay 7.4 导致调用 JSONWS add-user-with-workflow 调用的现有代码失败

问题描述 投票:0回答:1

我们刚刚从 Liferay CE 7.3 升级到 Liferay CE 7.4,现在发现调用 add-user-with-workflow 的应用程序失败。 Liferay 日志没有提供错误详细信息,响应正文中也没有提供任何错误详细信息。该调用是从 Java HTTP 客户端进行的,这是它从测试执行中调用的 URL(通过在调用之前记录日志捕获):

https://[hostname]/api/jsonws/user/add-user-with-workflow?
companyId=10157&
autoPassword=true&
-password1=&
-password2=&
autoScreenName=true&
-screenName=&
emailAddress=liferay.api.prod10%40mcintoshes.com&
-locale=&
firstName=Scott&
-middleName=&
lastName=McIntosh&
prefixId=0&
suffixId=0&
male=true&
birthdayMonth=0&
birthdayDay=0&
birthdayYear=0&
jobTitle=%7B%22isBatch%22%3A%22true%22%7D&
-groupIds=&
organizationIds=77377&
-roleIds=&
-userGroupIds=&
sendEmail=true

这是日志中的实际 URL,除了主机名已被删除,并且我将参数分成单独的行以使其更易于阅读。

然后我使用 Postman 运行它,并得到以下响应。

{
    "exception": "No JSON web service action with path /user/add-user-with-workflow and method GET for null",
    "throwable": "com.liferay.portal.kernel.jsonwebservice.NoSuchJSONWebServiceException: No JSON web service action with path /user/add-user-with-workflow and method GET for null",
    "error": {
        "message": "No JSON web service action with path /user/add-user-with-workflow and method GET for null",
        "type": "com.liferay.portal.kernel.jsonwebservice.NoSuchJSONWebServiceException"
    }
}

我检查了,具有这些参数的服务仍然存在(查看 /api/jsonws UI 中的服务)。

使用 POST 代替 GET 没有什么区别。

任何人都可以阐明这一点或有相同的经历吗?
也许不再支持表示空值的 -parameter 语法?
正如我在开始时所说,这在 Liferay 7.3 中完美运行。

更新:
还执行 API 调用以从用户的电子邮件地址获取用户。此调用的参数看起来不错,因为它不会抛出“No JSON Web Service”错误,而是抛出访问被拒绝错误:

{
    "exception": "Access denied to com.liferay.portal.kernel.service.UserService#getUserIdByEmailAddress",
    "throwable": "java.lang.SecurityException: Access denied to com.liferay.portal.kernel.service.UserService#getUserIdByEmailAddress",
    "error": {
        "message": "Access denied to com.liferay.portal.kernel.service.UserService#getUserIdByEmailAddress",
        "type": "java.lang.SecurityException"
    }
}

所以现在我想知道是否有更根本的问题是错误的。 于是我开始检查,发现了服务访问策略 管理控制台中的部分。有两个条目:SYSTEM_DEFAULT 和 SYSTEM_USER_PASSWORD。 SYSTEM_DEFAULT 设置为允许 getCountries 和 getRegions - 事实上,当我测试它们时,它们确实有效(它们是迄今为止唯一有效的调用)。 对于包含 * 的“服务类”,SYSTEM_USER_PASSWORD 设置为 *,“方法名称”为空。这表明经过身份验证的用户应该有权访问所有服务。

我确信这不是传递凭据的问题,因为 api/jsonws 上的服务测试 UI 也不起作用(getCountries 和 getRegions 除外)。它不会返回错误,它只是为我尝试的每个服务方法返回“{}”。是的,我在使用服务测试器时登录了。

7.4 中是否有我缺少的新门户属性?

liferay liferay-7 liferay-7.4
1个回答
0
投票

您解决这个问题了吗?升级后我也面临同样的问题。我正在将liferay 7.0升级到liferay 7.4版本。

问候, 赫塔尔

© www.soinside.com 2019 - 2024. All rights reserved.