我正在从ownCloud服务器共享文件,然后我在外部Drupal站点中嵌入链接(这需要用户在能够访问之前登录)。
到目前为止,我使用ownCloud REST“share api”对ownCloud服务器进行身份验证并返回指向文件的链接,但此链接是永久性的,将来无需身份验证即可重复使用。因此,如果用户要复制URL链接,即使他们在外部网站上的凭据被撤销,他们也可以保持对文件的访问权。
因为这些链接嵌入在经过身份验证的页面中,所以我希望避免用户再次登录到ownCloud来下载文件,所以我想使用短期令牌或类似的东西来保护它们(我想象的那种工作流程:用户登录到外部Drupal站点,站点服务器使用ownCloud服务器进行身份验证,接收令牌并附加令牌以下载链接。)
到目前为止,我已经搜索了官方论坛,发布在专家交流,阅读文档,并广泛搜索。在我看来,这个功能不存在,但似乎应该如此。所以如果有人知道,怎么做呢?也可以提供可以提供类似结果的替代解决方案!
答案 0 :(得分:1)
如果您检查OC Share API documentation,您可以看到存在参数“password”以向该链接添加密码:
创建新的共享
与用户/组或公共链接共享文件/文件夹。
- 语法:/ shares
- 方法:POST
- POST参数:path - (字符串)应共享的文件/文件夹的路径
- POST参数:shareType - (int)'0'= user; '1'=组; '3'=公共链接
- POST参数:shareWith - (字符串)用于共享文件的用户/组ID
- POST参数:publicUpload - (boolean)允许公共上传到公共共享文件夹(true / false)
- POST参数:密码 - (字符串)密码以保护公共链接与分享
- POST参数:权限 - (int)1 =读取; 2 =更新; 4 =创造; 8 =删除; 16 =分享; 31 =全部(默认值:31,公共股份:1)
- 必填字段:shareType 0或1的shareType,path和shareWith。
- 结果:包含新创建的共享的共享ID(int)的XML
另一种解决方案是存储您的共享文件并在需要时撤消它们:
删除分享
删除给定的分享。
- 语法:/ shares /
- 方法:DELETE
- 参数:share_id - (int)共享ID
您可以在以下网址查看更多信息:http://doc.owncloud.org/server/6.0/developer_manual/core/ocs-share-api.html
答案 1 :(得分:0)
在Web界面中,可以创建具有到期日期的共享。不确定为什么共享API还没有提供对此的访问权限(至少according to the docs)。但是已经在ownCloud的问题跟踪器中有an issue for it,这表明这可能在OC7中实现(应尽快发布)。
只是一句话:你的实际上更多的是一个功能请求而不是一个问题,实际上并不是真正与编程有关的问题。如果您决定使用ownCloud并且需要更具体的内容,那么您可能最好为其发布功能请求on the ownCloud issue tracker ...
答案 2 :(得分:0)
从ownCloud 7.0, you can "update" a share to have an expiration date开始:
更新分享
更新给定的分享。每个请求只能更新一个值。
- 语法:/ shares /
- 方法:PUT
- 参数:share_id - (int)共享ID
- PUT参数:permissions - (int)更新权限(请参阅上面的“创建共享”)
- PUT参数:密码 - (字符串)公共链接分享的更新密码
- PUT参数:publicUpload - (boolean)enable(true)/ disable(false)公共共享的公共上传。
- PUT参数: expireDate - (字符串)设置公共链接共享的过期日期。该参数期望格式良好的日期字符串,例如 “YYYY-MM-DD”