在没有身份验证的情况下显示文档



我目前正在使用Alfresco作为GED和Spring作为框架开发Java/JEE应用程序。我想在Navigator中显示文件而无需确认要求。我该怎么做。顺便说一下,我的项目中有2个模块:前端和后端,它们正在通过REST呼叫进行通信。从后端我试图传递对象的字节数组,但不幸的是,我将其作为字符串收到,因此我无法使用它。那么是否有建议解决这个问题?

   public Map<String, Object> getCourrierDetails(String idCourrier) throws Exception {
        Map<String, Object> courriersDetails = runtimeService.getVariables(idCourrier);
courriersDetails.put("idCourrier", idCourrier);
        DocumentDaoImpl dao=new DocumentDaoImpl();
        Document docCmis = (Document) dao.getDocument("workspace://SpacesStore/73871a36-9a6c-42c6-b3e3-7d68362fe9c0");
        byte[] myByteArray = readContent(docCmis.getContentStream().getStream());

        ByteArrayResource resource = new ByteArrayResource(myByteArray) {
            @Override
            public String getFilename() {
                return docCmis.getContentStreamFileName();
            }
        };
        System.out.println(resource.getFilename());
        //courriersDetails.put("resources", myByteArray);
        System.out.println(courriersDetails.get("resources")+" rrrr");
        //courriersDetails.put("contentStream",docCmis.getContentStream().getStream());
        return courriersDetails;
    }

假设您的前端和后端是自定义的,并且您的后端与Alfresco进行通信,那么您需要做的就是编写一个位于后端的代理。p>代理可以使用可以访问内容的预配置的"服务帐户"与Alfresco建立会话。这样,使用您的自定义WebApp的人就不会使用自己的凭据从Alfresco获取对象。相反,使用服务帐户,Web应用程序流传输到请求者。

例如,在我的一个项目中,我有一个资产服务,该资产服务使用CMI从给定ID的内容中获取InputStream:

public InputStream download(String assetId) {
    CmisObject obj = session.getObject(assetId);
    Document doc = null;
    if (obj.getBaseTypeId().equals(BaseTypeId.CMIS_DOCUMENT)) {
        doc = (Document) obj;
    }
    return doc.getContentStream().getStream();
}

然后,我的控制器只要求该资产获得一些有关它的信息,以使其易于设置一些有用的标题,然后从资产服务中获取输入流并返回:

@RequestMapping(value = "/api/asset/{assetId:.+}/download/{name}", method = RequestMethod.GET)
public ResponseEntity<InputStreamResource> downloadAsset(
        @PathVariable("assetId") String assetId,
        @PathVariable("name") String name) {
    // get the asset so we can get some info about it
    Asset asset = assetService.getAsset(assetId);
    // set the http headers (mimetype and length at a minimum)
    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.setContentType(MediaType.parseMediaType(asset.getMimetype()));
    httpHeaders.setContentLength(asset.getLength());
    // get the content stream
    InputStream inputStream = assetService.download(assetId);
    InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
    return new ResponseEntity<InputStreamResource>(inputStreamResource, httpHeaders, HttpStatus.OK);
}

此示例在Spring Boot应用程序中使用Spring MVC,但是如果需要的话,您当然可以使用普通的旧servlet做类似的操作。

一个选项是编写自己的网络脚本并以允许访客访问的方式进行设置。

http://docs.alfresco.com/4.1/concepts/ws-authenticating.html

还有一个可以完全禁用权限检查的选项,但是我从未尝试过。

https://community.alfresco.com/thread/175381-disabling-permission-checking

相关内容

  • 没有找到相关文章