在IFrame中调用webscript时对alfresco用户进行授权

时间:2014-12-11 11:23:50

标签: alfresco alfresco-share

我正在开发一个组件,可以轻松编辑文档属性页面中的关联。 组件的可视部分是一个显示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>

我正在使用上面的代码。但仍然在加载页面时要求输入用户名和密码。请帮帮我

1 个答案:

答案 0 :(得分:1)

首先,不要将iFrame用于简单的webscript。你没有加载一个应该拥有自己会话的整个新页面。

只需使用客户端JavaScript获取JSON后端数据,即可绘制自己的UI。

在任何情况下,你都被迫使用iFrame,然后只需创建自己的myspaces webscript。复制所有内容,重命名并在每个生成的URL后面添加alf_ticket。