Skip to content

API ‐ 用户&鉴权相关API

lifegpc edited this page Feb 2, 2024 · 9 revisions

用户相关接口

获取用户信息

GET /api/user

参数名字 参数类型 可选 描述
id int 用户ID
username string 用户名
  • 优先使用id查找用户,其次使用username,如都未指定,则返回当前登录用户的信息。
  • 返回类型

新建用户

PUT /api/user

参数名字 参数类型 可选 描述
name string 用户名
password string 明文密码
is_admin boolean 是否设为管理员,默认为false(0)
permissions int(UserPermission) 用户权限,非管理员默认为无(0),管理员强制为全部
  • 返回值为用户ID

鉴权相关接口

新建Token(用户登录)

PUT /api/token

参数名字 参数类型 可选 描述
username string 用户名
password string base64编码的经过处理的密码
t int 当前的时间戳,单位为ms
set_cookie boolean 是否使用Set-Cookie设置Cookie,默认为false(0)
http_only boolean 设置Cookie的httpOnly属性,默认为true(1)
secure boolean 设置Cookie的secure属性,默认为false(0)
client string 客户端名字
device string 设备名称,浏览器可使用浏览器名称和版本号
client_version string 客户端版本号
client_platform string 客户端平台,例如web, android, ios, windows, linux, macos等。
  • 返回新的Token信息。(返回类型
  • 该接口无需鉴权。

如何生成经过处理的密码

import pbkdf2Hmac from "pbkdf2-hmac";
const password = "PASSWORD";
// 当前的时间戳,需要包含在请求中
const t = (new Date()).getTime();
const p = new Uint8Array(await pbkdf2Hmac(password, "eh-downloader-salt", 210000, 64, "SHA-512"));
// 经过处理的密码
const p2 = new Uint8Array(await pbkdf2Hmac(p, t.toString(), 1000, 64, "SHA-512"));

获取Token信息

GET /api/token

参数名字 参数类型 可选 描述
token string Token
  • 若未指定,将使用鉴权使用的token。

删除Token(退出登录)

DELETE /api/token

参数名字 参数类型 可选 描述
token string Token
  • 若未指定,将使用鉴权使用的token。

鉴权方式

例如token为1234

# 通过Cookie鉴权
curl "$hostname/api/user" -H "Cookie: token=1234"
# 通过HTTP自定义头部鉴权
curl "$hostname/api/user" -H "X-Token: 1234"