Liferay AUI createUrl() - 拒绝流程操作

时间:2017-02-22 11:16:41

标签: liferay-6 liferay-aui alloy-ui

我目前正在尝试使用aui在数据表中自动生成actionUrls。

我已经使用编码器生成链接,但是,一旦我尝试使用其中一个链接来执行操作,它就会被拒绝,并且不会执行操作。我假设这是跨站点脚本保护措施的一部分。

[http-bio-8080-exec-2][SecurityPortletContainerWrapper:630] Reject process action for /c/portal/layout on functiontest_WAR_functionTestportlet

我正在生成这样的链接:

<aui:script>
AUI().use( 
          'aui-datatable',
          'datatable-sort',
          'datatable-paginator',
          'aui-datatable-highlight',
          'liferay-portlet-url',
          function(A) {
            var columns =[{
                label : 'ID',
                key : 'testVar',
                allowHTML : true,
                sortable : true,
                formatter : function(o) {

                    var url = Liferay.PortletURL.createActionURL();
                    url.setWindowState("<%= LiferayWindowState.NORMAL.toString()%>");
                    url.setPortletMode("<%= LiferayPortletMode.VIEW %>");
                    url.setPortletId("<%= themeDisplay.getPortletDisplay().getId() %>");
                    url.setPlid("<%= plid %>");
                    url.setParameter("javax.portlet.action","actionTest");
                    url.setParameter("testVar",o.data.testVar);

                    return '<a href="'+ url +'">' + o.data.TestVar + '</a>';
                }
            }];
         var table = new A.DataTable(
                {
                    ...
                }
            ).render('#DataTable');
        .....
</aui:script>

有没有人知道如何在不禁用安全性的情况下允许执行新生成的URL?

亲切的问候 约翰史密斯

1 个答案:

答案 0 :(得分:0)

当您的操作网址中不存在身份验证令牌时,会发生这种情况。您可以添加auth参数,或者您有3个选项可以跳过这种情况:

  

编辑portal-ext.properties:

auth.token.ignore.actions=....
  

将init-param添加到portlet.xml:

<init-param>
    <name>check-auth-token</name>
    <value>false</value>
</init-param>
  

编辑portal-ext.properties(不推荐)

auth.token.check.enabled=true