我正在开发一个组件,可以轻松编辑文档属性页面中的关联。 组件的可视部分是一个显示myspaces webscript的IFRAME。 我很难将用户身份验证转移到IFRAME的内容。会话丢失,因此浏览器要求新的BasicAuthentication。 我可以使用alf_ticket url参数传输票证,但不会重复使用webscript生成的其他URL。
我如何将Alfresco身份验证转移到IFRAME中包含的webscript?
<script type="text/javascript">
var self = this;
var ticket;
var xmlHttpReq = false;
// Mozilla/Safari
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open("GET", "http://blrkec335927d:8080/alfresco/wcservice/api/login?u=admin&pw=admin", true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'json');
self.xmlHttpReq.setRequestHeader('X-Alfresco-Remote-User', 'admin');
xmlHttpReq.onreadystatechange = function() {//Call a function when the state changes.
alert(xmlHttpReq.status);
if (xmlHttpReq.readyState == 4 && xmlHttpReq.status == 200)
{
var xml = xmlHttpReq.responseXML;
var getticket = xml.getElementsByTagName("ticket");
ticket = getticket[0].childNodes[0].nodeValue
var url1 = "http://blrkec335927d:8080/alfresco/wcservice/ui/myspaces?f=0&p=%2FCompany%20Home&alf_ticket="+ticket;
var aa='<iframe bgcolor="#edf6fc" width="100%" height="100%" frameborder=0 src="'+url1+'" />';
document.getElementById('uploaddoc').innerHTML = aa;
}
}
self.xmlHttpReq.send();
</script>
<body>
<span id="pageTitle">${label['ALFRESCO_DOCUMENT']}</span>
<div id="uploaddoc">
</div>
</body>
<span id="footerButtons" style="vertical-align: bottom;"></span>
我正在使用上面的代码。但仍然在加载页面时要求输入用户名和密码。请帮帮我
答案 0 :(得分:1)
首先,不要将iFrame用于简单的webscript。你没有加载一个应该拥有自己会话的整个新页面。
只需使用客户端JavaScript获取JSON后端数据,即可绘制自己的UI。
在任何情况下,你都被迫使用iFrame,然后只需创建自己的myspaces webscript。复制所有内容,重命名并在每个生成的URL后面添加alf_ticket。