我如何更新露天共享网站?

时间:2016-08-02 08:05:02

标签: python alfresco alfresco-webscripts

我正在尝试更新我在Alfresco中使用Share脚本创建的网站(只是更改其名称),但我收到function b64EncodeUnicode(str) { return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) { return String.fromCharCode('0x' + p1); })); } function b64DecodeUnicode(str) { return decodeURIComponent(Array.prototype.map.call(atob(str), function(c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }).join('')); } function addNewLines(str) { var finalString = ''; for(var i=0; i < str.length; i++) { finalString += str.substring(0, 64) + '\n'; str = str.substring(64); } finalString += str; return finalString; } function removeLines(pem) { var lines = pem.split('\n'); var encodedString = ''; for(var i=0; i < lines.length; i++) { encodedString += lines[i].trim(); } return encodedString; } function stringToArrayBuffer(byteString){ var byteArray = new Uint8Array(byteString.length); for(var i=0; i < byteString.length; i++) { byteArray[i] = byteString.codePointAt(i); } return byteArray; } function arrayBufferToString(exportedPrivateKey){ var byteArray = new Uint8Array(exportedPrivateKey); var byteString = ''; for(var i=0; i < byteArray.byteLength; i++) { byteString += String.fromCodePoint(byteArray[i]); } return byteString; } window.crypto.subtle.generateKey( { name: "RSA-OAEP", modulusLength: 2048, publicExponent: new Uint8Array([0x01, 0x00, 0x01]), hash: {name: "SHA-256"} }, true, ["encrypt", "decrypt"] ).then(function(keyPair) { window.crypto.subtle.exportKey( "pkcs8", keyPair.privateKey ).then(function(exportedPrivateKey) { var privateKeyDer = arrayBufferToString(exportedPrivateKey); //pkcs#8 to DER var privateKeyB64 = b64EncodeUnicode(privateKeyDer); //btoa(privateKeyDer); var privateKeyPEMwithLines = addNewLines(privateKeyB64); //split PEM into 64 character strings var privateKeyPEMwithoutLines = removeLines(privateKeyPEMwithLines); //join PEM var privateKeyDerDecoded = b64DecodeUnicode(privateKeyPEMwithoutLines); // atob(privateKeyB64); var privateKeyArrayBuffer = stringToArrayBuffer(privateKeyDerDecoded); //DER to arrayBuffer window.crypto.subtle.importKey( //importKEy "pkcs8", privateKeyArrayBuffer, { name: "RSA-OAEP", hash: {name: "SHA-256"} }, true, ["decrypt"] ).then(function(importedPrivateKey) { console.log(importedPrivateKey); }); }); }); 响应。我确定我的登录名和密码是正确的。

代码:

fetch(`http://www.endpoints.com/search/${this.state.search}`

我在第二部分得到了错误。登录部分没有任何问题。 你能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:2)

这是因为您使用不同的上下文来进行查询。

Alfresco堆栈由多个部分组成:

  • alfresco.war
  • share.war
  • solr.war

如果我们忘记了solr部分并专注于你的问题,你有:

  • 内容存储库(alfresco),其中包含alfresco的核心服务
  • Web应用程序(共享),其中包含应用程序的Web UI并与内容存储库通信以执行某些操作

他们没有共享相同的背景,并且拥有不同的生活。一个可以在服务器上,另一个可以在另一个服务器上。

所以这意味着,当您进行身份验证时,您正在共享上下文中执行此操作:

http://127.0.0.1:8080/share/page/dologin

当您尝试更新您的网站时,您正在露天上下文(您尚未通过身份验证)上进行此操作:

http://127.0.0.1:8080/alfresco/service/api/sites/OdooSite50

我看到了两个解决方案:

  1. 您在露天上下文(网络服务alfresco/s/api/login)上进行身份验证,然后您将通过身份验证来调用您的露天网站服务
  2. 您通过共享代理:/alfresco/service/api/sites变为/share/proxy/alfresco/api/sites