2017-02-22 56 views
0

我目前正在嘗試使用aui在數據表中自動生成actionUrls。Liferay AUI createUrl() - 拒絕進程操作

我已經使用formater生成鏈接,但是,只要我嘗試使用其中一個鏈接執行操作,它將被拒絕並且操作不會執行。我假設這是跨站點腳本保護措施的一部分。

[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的執行,而不禁用安全?

親切的問候 約翰·史密斯

回答

0

這時候的身份驗證令牌不會在你的動作URL存在發生。您可以添加auth參數,或者你有3個選擇跳過這種情況下:

編輯portal-ext.properties:

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

添加的init-參數去的portlet.xml:

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

編輯門戶 - ext.propertie S(不推薦)

auth.token.check.enabled=true 
+0

這是偉大的工作,我謝謝你。但是,如果我想將它添加到參數中,我將如何檢索auth令牌? –

+0

Liferay默認添加此參數,因爲它在這裏說: https://web.liferay.com/es/community/wiki/-/wiki/Main/Authentication+Token 如果您有新的自定義操作或portlet,請檢查您是否必須將其添加到具有下列屬性的白名單: 「portlet.add.default.resource.check.whitelist」 「portlet.add.default.resource.check.whitelist.actions」 –