@authup/server-adapter-web

中文文档
1.0.0-beta.73发布于 2026/11/02Apache-2.0TypeScriptES Module近 30 天下载 3101

校验网络请求的 Authup 访问令牌, 以它为基础的任何框架 .

中文使用文档
文档目录10 节
  1. 为什么?
  2. 安装
  3. 使用量
  4. 获取处理器
  5. 交给你的处理者
  6. 从别处读取代号
  7. 选项
  8. API 密码
  9. 页:1
  10. 许可证

Authup logo

@authup/服务器-适应器-web

校验网络的 Authup 访问符 Request在任何框架内.
在框架的中间软件形状中,您将一个功能包入:Hono, routup, Bun. serve 或平面取取取处理器.

npm version CI License: Apache-2.0

安装 • 妇女 使用量 • 妇女 API 密码 • 妇女 文档


为什么?

网上建立的框架 Request API各自都有自己的中间软件签名,因此每个框架的适配器都永远不会跟上. 这个包装了他们分享的部分: 从一个 Request,用 @authup/server-adapter-kit 并归还索赔。 存储结果的几行都是你的.

关切没有它用这个
页眉解析分开 Bearer <token> 自己和处理错误的数值为您解析; 错误的页眉扔出
核查获取每个框架的密钥或调用回顾一个 TokenVerifier本地或远程的,与其他运输工具共享
在信头外键入手写 cookie 或查询回退tokenByRequest 没有时读取倒数 Authorization 发送信头
约束令牌比较证书缩写certificateThumbprintByRequest 输入 RFC 8705 检查

安装

npm install @authup/server-adapter-web @authup/server-adapter-kit

TokenVerifier 来自 @authup/server-adapter-kit,直接导入。 这套方案只采用无害环境管理,没有同级依赖关系。 内容 engines 字段请求节点.js >=26.0.0; 核查包导入 node:crypto,所以另一个运行时间必须解决节点内置.

使用量

获取处理器

import { TokenVerifier } from '@authup/server-adapter-kit';
import { verifyRequest } from '@authup/server-adapter-web';

const tokenVerifier = new TokenVerifier({ baseURL: 'https://auth.example.com' });

export async function handle(request: Request): Promise<Response> {
    let data;
    try {
        data = await verifyRequest(request, { tokenVerifier });
    } catch {
        return new Response('invalid token', { status: 401 });
    }

    if (!data) {
        return new Response('unauthenticated', { status: 401 });
    }

    return new Response(`hello ${data.sub}`);
}

verifyRequest 解析核查数据,解析 undefined 当请求无任何迹象的时候 Authorization 标题或符号 核查者拒绝.

见 @authup/server-adapter-kit 用于本地对远程验证、缓存和权限.

交给你的处理者

import type { TokenVerificationData } from '@authup/server-adapter-kit';

type AuthedHandler = (request: Request, auth: TokenVerificationData) => Response | Promise<Response>;

function withAuth(handler: AuthedHandler) {
    return async (request: Request): Promise<Response> => {
        const auth = await verifyRequest(request, { tokenVerifier }).catch(() => undefined);
        if (!auth) {
            return new Response(null, { status: 401 });
        }

        return handler(request, auth);
    };
}

export const orders = withAuth((_request, auth) => new Response(`orders of ${auth.sub}`));

索赔旅费作为论据,打过一次字,而不是附在索赔表上 Request在有其自身背景目标的框架内,通过框架的基础 Request (呼诺: c.req.raw),并将结果保存在这一背景下.

从别处读取代号

const data = await verifyRequest(request, {
    tokenVerifier,
    tokenByRequest: (req) => new URL(req.url).searchParams.get('access_token') ?? undefined,
});

tokenByRequest 只有在请求没有 Authorization 头曰. 其价值可能包括: Bearer 前缀或非前缀。 适配器自己不画饼干.

选项

选项类型默认说明
tokenVerifierITokenVerifier(必须)通常为: TokenVerifier 从 @authup/server-adapter-kit
tokenByRequest(request) => string | undefinedundefined没有后退符号源 Authorization 页眉已存在
certificateThumbprintByRequest(request) => string | undefined | Promise<string | undefined>undefined客户端证书的 SHA-256 拇指印, 用于印有证书的符号

API 密码

导出仁爱目的
verifyRequest函数验证一个 Request
VerifyRequestOptions类型上面的选项对象

页:1

  • 仅 Bearer 在标题中被接受. A 类 Basic 或其他计划 Authorization 掷出 BearerTokenMalformedError (单位:千美元)bearer_token_malformed),以及 tokenByRequest 未咨询.
  • 校验错误为 JWTError编号 (单位:千美元)invalid_token, (中文(简体) ), expired_token, (中文(简体) ), inactive_token) (中文(简体) ). 全部,以及畸形头,映射到HTTP 401.
  • 查询字符串符被代理登录 . 首页或饼干 tokenByRequest 在你能够.

许可证

由 所制

现按 Apache 2.0 许可证。 。 。 .

版本与发布记录

@authup/server-adapter-web 共发布 32 个版本,首次发布于 2026/05/08;过去 12 个月发布了 32 个版本。

版本发布日期距今
1.0.0-beta.73latest2026/11/025 天前
1.0.0-beta.722026/10/2711 天前
1.0.0-beta.712026/10/2018 天前
1.0.0-beta.702026/10/1919 天前
1.0.0-beta.692026/10/1424 天前
1.0.0-beta.682026/09/251 个月前

关于 @authup/server-adapter-web 的常见问题

@authup/server-adapter-web 是什么?

校验网络请求的 Authup 访问令牌, 以它为基础的任何框架 .

如何安装 @authup/server-adapter-web?

在项目目录运行 npm install @authup/server-adapter-web,或使用 pnpm add / yarn add / bun add。

@authup/server-adapter-web 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@authup/server-adapter-web 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@authup/server-adapter-web 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=26.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@authup/server-adapter-web 可以商用吗?

@authup/server-adapter-web 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@authup/server-adapter-web 的下载量有多少?

根据 npm 官方下载统计,@authup/server-adapter-web 在 2026/10/07 – 2026/11/05 这 30 天内被下载 3,101 次,日均约 103 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@authup/server-adapter-web 还在维护吗?

最新版本 1.0.0-beta.73 发布于 2026/11/02(5 天前);至今共发布 32 个版本,其中过去 12 个月发布了 32 个;首次发布于 2026/05/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。