Skip to content

[Feature] 生成一个文件或者文件夹的临时访问链接 #526

@lee-cq

Description

@lee-cq

请确认以下事项

  • 我已确认阅读并同意 AGPL-3.0 第15条
    本程序不提供任何明示或暗示的担保,使用风险由您自行承担。

  • 我已确认阅读并同意 AGPL-3.0 第16条
    无论何种情况,版权持有人或其他分发者均不对使用本程序所造成的任何损失承担责任。

  • 我确认我的描述清晰,语法礼貌,能帮助开发者快速定位问题,并符合社区规则。

  • 我已确认阅读了OpenList文档

  • 我已确认没有重复的问题或讨论。

  • 我认为此问题必须由OpenList处理,而非第三方。

  • 我已确认此功能尚未被实现。

  • 我已确认此功能是合理的,且有普遍需求,并非我个人需要。

需求描述

From AList ##8336

这个功能大家应该很常用到才对。例如视频的临时授权访问,那么就需要生成一个临时sign。目前有一个“签名所有”功能,但是这个签名无法设定过期时间,而且我看了下,好像一直都不过期,而且sign值在同一个用户下是相同的,这完全不符合需求。
希望能有这种功能:根据token,path,有效期,生成一个sign,path可以是具体一个文件,也可以是一个文件夹。
然后 http://www.xxx.com/aaa/bbb/cccc.mp4?sign=xxxxxxxxx

实现思路

页面:

  1. 菜单中添加一个Share按钮
  2. 创建窗口, 填写密码(可选)和过期时间(默认:7天)
  3. 呈现共享连接的窗口

管理页面:

  1. 创建一个标签页,显示和管理当前用户创建的全部的共享连接(删,改,查)

数据库: 创建一张新表:保存shareID, CreateUser, SrcPath, Pwd, CreateTime, 过期时间

共享连接格式约定: /_ashare/{id}?pwd=xxxx

API:
POST /api/share/create 创建一个共享连接,将数据保存到数据库 ;返回共享连接
POST /api/share/{id} 编辑现有的连接
GET /api/shares 查询当前用户创建的全部的连接
GET /api/share/{id} 查询指定的ID
DELETE /api/share/{id} 删除指定的ID

逻辑:
添加一个中间件,检查 _ashare 信息,并将校验通过后的请求中的Path替换为相应的 srcpath,完成之后的操作
sharepath,应只支持如下接口:

  • /api/fs/list 列出目录
  • /api/fs/get 获取对象信息

附加信息

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions