跳转到内容

登录

4 endpoints.

POSThttp://localhost:3000/api/login

尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。

对应的 handler 是 login,位于 crates/lanrurugi-api/src/login.rs:209。

响应

200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/login.rs:37 处的 handler。

该响应没有示例数据。

该端点不需要认证。

填写你自己的实例地址,请求由浏览器直接发往该地址。

查询调用者是否「已登录」(用于权限门控判断,GET /login/status)

Section titled “查询调用者是否「已登录」(用于权限门控判断,GET /login/status)”
GEThttp://localhost:3000/api/login/status

尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。

下面这段是 handler 自己的文档注释(crates/lanrurugi-api/src/login.rs:619)的译文;原文以源码为准。

GET /login/status——报告调用者就「是否显示仅管理员可见的界面」这一判断而言是否「已登录」,与 legacy 自己的 userlogged 模板变量一致(Controller/Reader.pm/Index.pm:enable_pass == 0 || session('is_logged'))。刻意做成自己的端点,而不是在 /info 上加一个新字段——/info 逐字段镜像 legacy 的第三方 ServerInfo OpenAPI schema(宪法原则 II),而 logged_in 在那个契约里没有位置。

响应

200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/login.rs:38 处的 handler。

该响应没有示例数据。

该端点不需要认证。

填写你自己的实例地址,请求由浏览器直接发往该地址。

登出(refresh token 现在是有状态的,所以登出会真正吊销它)

Section titled “登出(refresh token 现在是有状态的,所以登出会真正吊销它)”
POSThttp://localhost:3000/api/logout

尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。

下面这段是 handler 自己的文档注释(crates/lanrurugi-api/src/login.rs:671)的译文;原文以源码为准。

由于 refresh token 现在是有状态的(lanrurugi_storage::refresh_tokens),登出现在会真的吊销——烧掉调用者 access token 所源自的整个 refresh token 家族(与 rotate 自己那条重放检测路径采取的补救相同),而不是只清掉浏览器 cookie、然后指望那个已成孤儿的 access token 在接下来几小时里自己安静过期。

它从 access token 里读 fid(session::COOKIE_NAME,Path=/),而不是从 refresh cookie 读——这是刻意的,这样 REFRESH_COOKIE_PATH 就能继续只限定于 POST /api/token/refresh,不必再覆盖本端点。这里用的是 family_id_ignoring_expiry 而非平常那个会检查过期的验证器:用户在 access token 已经过期之后(闲置的标签页,还没碰到任何会触发静默刷新的端点)点击「登出」,他的 refresh token 家族仍然必须被真正吊销——一个已过期的 access token 仍能通过其签名证明来源真实,而这正是这里唯一需要的东西。

响应

200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/login.rs:39 处的 handler。

该响应没有示例数据。

该端点不需要认证。

填写你自己的实例地址,请求由浏览器直接发往该地址。

刷新令牌(POST /token/refresh,legacy 没有对应端点)

Section titled “刷新令牌(POST /token/refresh,legacy 没有对应端点)”
POSThttp://localhost:3000/api/token/refresh

尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。

下面这段是 handler 自己的文档注释(crates/lanrurugi-api/src/login.rs:369)的译文;原文以源码为准。

POST /token/refresh——legacy 没有对应端点。用 refresh cookie 换取一个新的 access token + 轮换后的 refresh cookie(轮换/重放检测的语义见 lanrurugi_storage::refresh_tokens::rotate 自身的文档)。前端会在任何其他端点返回 401 时透明地调用它(apps/frontend/src/api/client.ts),且在此之前不会跳转到 /login。

响应

200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/login.rs:40 处的 handler。

该响应没有示例数据。

该端点不需要认证。

填写你自己的实例地址,请求由浏览器直接发往该地址。