WebScript 需要访客级别的身份验证
WebScript require authentication with guest level
当从Share 调用WebScript 时,总是会出现身份验证对话框。从工作流表单调用 Web 脚本。
userdetails.ftl的一部分:
<#include "/org/alfresco/components/form/controls/common/utils.inc.ftl" />
...
<script>
Alfresco.util.Ajax.jsonGet(
{
url: "http://...:8080/alfresco/s/ms-ws/assignments?taskId=" + clearTaskId,
successCallback:
{
fn: function(response)
{
if(response.json)
{
var json = JSON.parse(response.serverResponse.responseText);
...
for(var i = 0; i < entries.length; i++) {
...
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var cell5 = row.insertCell(4);
cell1.innerHTML = entries[i].entry.jobtitle;
cell2.innerHTML = entries[i].entry.firstName;
cell3.innerHTML = "";
cell4.innerHTML = "";
cell5.innerHTML = "";
}
}
},
scope: this
},
failureCallback:
{
fn: function(response)
{
alert("error!");
},
scope: this
}
});
</script>
我的assignments.get.xml:
<webscript>
<shortname>Get all assignments for the specific process instance</shortname>
<description>Returns a list of assignments for the specific process instance</description>
<url>/ms-ws/assignments?id={taskId}</url>
<url>/ms-ws/assignments.json?id={taskId}</url>
<url>/ms-ws/assignments.html?id={taskId}</url>
<format default="json">extension</format>
<authentication>user</authentication>
<transaction>none</transaction>
</webscript>
我尝试将 user
更改为 guest
并将 &guest=true
添加到网络脚本 URL 的末尾,但没有帮助。
如何在这种情况下禁用身份验证对话框?
尝试通过以下方式解决(无效):
在 authentication
元素中,我添加了值为 admin
的属性 runas
:
...
<authentication runas="admin">guest</authentication>
...
在 WebScript url 我添加了 &guest=true
url: "http://...:8080/alfresco/s/ms-ws/assignments?taskId=" + clearTaskId + "&guest=true"
与其在客户端上从 JavaScript 运行 调用 repo 层,不如利用 Share 代理更好,例如 /share/proxy/alfresco/ms-ws/assignments。
如果您直接从客户端访问回购层,则您正在对网络和 Alfresco 部署做出一些可能并不总是正确的假设(即直接访问 Alfresco 回购层的能力)。
当从Share 调用WebScript 时,总是会出现身份验证对话框。从工作流表单调用 Web 脚本。
userdetails.ftl的一部分:
<#include "/org/alfresco/components/form/controls/common/utils.inc.ftl" />
...
<script>
Alfresco.util.Ajax.jsonGet(
{
url: "http://...:8080/alfresco/s/ms-ws/assignments?taskId=" + clearTaskId,
successCallback:
{
fn: function(response)
{
if(response.json)
{
var json = JSON.parse(response.serverResponse.responseText);
...
for(var i = 0; i < entries.length; i++) {
...
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var cell5 = row.insertCell(4);
cell1.innerHTML = entries[i].entry.jobtitle;
cell2.innerHTML = entries[i].entry.firstName;
cell3.innerHTML = "";
cell4.innerHTML = "";
cell5.innerHTML = "";
}
}
},
scope: this
},
failureCallback:
{
fn: function(response)
{
alert("error!");
},
scope: this
}
});
</script>
我的assignments.get.xml:
<webscript>
<shortname>Get all assignments for the specific process instance</shortname>
<description>Returns a list of assignments for the specific process instance</description>
<url>/ms-ws/assignments?id={taskId}</url>
<url>/ms-ws/assignments.json?id={taskId}</url>
<url>/ms-ws/assignments.html?id={taskId}</url>
<format default="json">extension</format>
<authentication>user</authentication>
<transaction>none</transaction>
</webscript>
我尝试将 user
更改为 guest
并将 &guest=true
添加到网络脚本 URL 的末尾,但没有帮助。
如何在这种情况下禁用身份验证对话框?
尝试通过以下方式解决(无效):
在 authentication
元素中,我添加了值为 admin
的属性 runas
:
...
<authentication runas="admin">guest</authentication>
...
在 WebScript url 我添加了 &guest=true
url: "http://...:8080/alfresco/s/ms-ws/assignments?taskId=" + clearTaskId + "&guest=true"
与其在客户端上从 JavaScript 运行 调用 repo 层,不如利用 Share 代理更好,例如 /share/proxy/alfresco/ms-ws/assignments。
如果您直接从客户端访问回购层,则您正在对网络和 Alfresco 部署做出一些可能并不总是正确的假设(即直接访问 Alfresco 回购层的能力)。