【问题标题】:Liferay 6.2: Allow public access to one JSON API methodLiferay 6.2:允许公开访问一种 JSON API 方法
【发布时间】:2015-04-09 12:30:35
【问题描述】:

我正在尝试提供对 URL http://localhost:8080/api/jsonws/journalarticle/get-article-by-url-title/group-id/10182/url-title/events 的公共访问权限

当我尝试在未登录 Liferay 的情况下访问此 URL 时,我收到以下错误:

{"exception":"Authenticated access required"}

我尝试在 portal-ext.properties 中设置以下内容:

json.service.public.methods=*
jsonws.web.service.public.methods=*

我也尝试将值设置为get*,但没有成功。我需要通过托管在不同域上的 AngularJs 应用程序访问此 API,因此如果可能,我还需要设置 CORS 访问权限。

【问题讨论】:

    标签: liferay liferay-6


    【解决方案1】:

    即使我已经尝试了上述所有方法都不起作用,您可以做的是在您的自定义 portlet 中为调用 API 的 JSON Web 服务创建自己的 API

    JournalArticleLocalServiceUtil.getArticleByUrlTitle(groupId, urlTitle);
    

    在你的 *ServiceImp.java 中添加下面的标签,看例子

    @AccessControlled(guestAccessEnabled=true)

    例子:

    @AccessControlled(guestAccessEnabled=true)
    public JurnalArtical yourMethodName(){...}
    

    【讨论】:

      【解决方案2】:

      尝试在 portal-ext.properties 中添加属性

      json.web.service.enabled=true
      json.service.auth.token.enabled=false
      auth.token.check.enabled=false
      json.service.auth.token.hosts.allowed=
      

      将第四个留空。

      这将禁用 Liferay 的 JSON 调用所需的身份验证。

      【讨论】:

      • 即使添加了第三个属性,仍然会出现相同的异常。我试过重启服务器。顺便说一句,我使用的是 Liferay 的企业版,如果这有什么不同的话。
      • 我猜,如果你使用 EE 或 CE,没有区别。我已经更新了另一个属性。
      • 不。我正在为 CE 版本尝试相同的配置,看看是否有什么不同。
      • 如果你发现任何成功。请更新答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 2020-04-24
      • 2015-05-13
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多