@easyweb/authentication

中文文档
2.2.0发布于 2026/08/27MITTypeScriptESM + CJS零依赖近 30 天下载 3439

Easyweb 微服务共享认证原始:无国籍的 JWT 中间软件,请求上下文,以及符号验证帮助器

中文使用文档
文档目录8 节
  1. 2.1.0. —— SUPER_ADMIN 现在满足 authorize(["ADMIN"])
  2. 升级到 2. 0. 0 — 断裂
  3. 安装
  4. 使用量
  5. 它所证实的,和所没有的
  6. 出口
  7. 托肯合同
  8. 许可证

@easyweb/认证

共享Easyweb微服务认证原始——无国籍的JWT中件, 请求文本中间软件,以及符号验证工具服务.

附带到 @easyweb/events 页:1 通讯,和 @easyweb/errors 页:1 hTTP 错误分类.

2.1.0. —— SUPER_ADMIN 现在满足 authorize(["ADMIN"])

authorize() 是一个精确的字符串匹配。 平台上的每个管理员路线都会被写入 authorize(["ADMIN"])认证服务 admin-seed.ts 授予拖曳符操作员 SUPER_ADMIN 默认 —— 因此种子账户无法调用单个管理路径 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}这个平台.

SUPER_ADMIN 现在暗示 ADMIN没有任何其它意义: ADMIN 蓄意 已经 没有 隐含 USER因为那边缘会无声地拓宽每一个未来的顾客 前往工作人员的路线.

增加,只扩大. 仍然在2.0.0的服务 表现得和它一样 SUPER_ADMIN 仅仅被锁在那里——所以这不需要协调部署。 自兹 每个服务声明 ^2.0.0 但从一个锁文件安装,用:

npm i @easyweb/authentication@^2.1.0

新的 effectiveRoles(roles) 导出对自己的服务进行同样的扩展 守护(特别是Auth-service的DB后置中件).

现状不变: authorize() 还投出 NotAuthorizedError,这是 401 (中文(简体) ) 即使是一个签了名的来电 角色不对 每个服务是http套接字. 需要从"不允许"中告诉"未签入"的来电者必须检查角色本身.

升级到 2. 0. 0 — 断裂

错误类已移动到 @easyweb/errors。错误处理是交叉的,并且 与JWTs无关;服务需要 ConflictError 不必依赖 它的认证包.

- import { NotAuthorizedError } from "@easyweb/authentication";
+ import { NotAuthorizedError } from "@easyweb/errors";

@easyweb/errors 是一个 依赖性 - 和这个包一起安装 不要让 它最后被窝在地上 node_modules/@easyweb/authentication/: 两份 CustomError 表示 instanceof 跨越边界失败, 错误处理器会回答 500块,每分每分 每分每分 每分每分每分每分每分每分每分 每分每分每分每分每分 每分每分每分每分每分每分 每分每分每分每分每分每分每分每分每分 每分每分每分每分每分每分每分每分每分每分每分 每分每分每分每分每分每分每分每分每分每分500 校验 npm ls @easyweb/errors。 。 。 .

2.0.0中也是新的: extractToken 财务报告和审定财务报表 isValidAccessPayload 用于服务 保存自己的DB后置中件(见下文),否则将复制.

安装

npm install @easyweb/authentication

express@^5 财务报告和审定财务报表 jsonwebtoken@^9 是同伴的依赖关系——消费服务 提供他们.

使用量

包里没有写 process.env。在启动时,配置会被绑定,所以 软件包从不到达服务 config 模块.

import express from "express";
import cookieParser from "cookie-parser";
import { createAuthMiddleware, requestContext } from "@easyweb/authentication";
import config from "./config";

const app = express();
app.use(cookieParser()); // required: the middleware reads the accessToken cookie
app.use(requestContext);

const authMiddleware = createAuthMiddleware(config.jwt);
// config.jwt must supply { secret, issuer, audience } matching auth-service's

app.get("/me", authMiddleware.authenticate, (req, res) => {
  res.json(req.user); // { id, email, username, roles, permissions }
});

app.get("/feed", authMiddleware.optionalAuth, (req, res) => {
  res.json({ personalised: Boolean(req.user) });
});

app.delete(
  "/admin/:id",
  authMiddleware.authenticate,
  authMiddleware.authorize(["admin"]),
  handler,
);

嵌入符( 只有自动服务) :

import { createJwtSigner } from "@easyweb/authentication";

const signAccessToken = createJwtSigner(config.jwt);
// config.jwt additionally needs accessTokenTtlSeconds

它所证实的,和所没有的

authenticate 实值 无国籍人它检查签名、签发人、受众、过期日期和 有效载荷是一个完善的进入标志。 它没有进行数据库查询.

在认证服务中注销或会话, 此处将隐蔽, 直至访问令牌 期满JWT_ACCESS_TOKEN_TTL_SECONDS页:1 如果需要立即提供服务 撤销,它必须保留自己的DB后置中件——认证服务就是这样做的.

req.user.permissions 总是 []。访问符上没有 permissions 索赔; author-service根据请求时间解决自己的表格中的内容。 守护此阵列 将拒绝每一个请求.

出口

导出目的
createAuthMiddleware(config){ authenticate, optionalAuth, authorize }
requestContext传播/生成 x-request-id
createJwtVerifier(config)(token) => JwtAccessPayload,丢入无效
createJwtSigner(config)(claims) => string
extractToken(req)熊头头,然后 accessToken 饼干
isValidAccessPayload(decoded)类型后卫: 这是很好的形状吗 访问 标志?
effectiveRoles(roles)通过影响图(2.1.0)扩展的所起作用
effectiveRoles(roles)通过影响图(2.1.0)扩展的所起作用
JwtAccessPayload, (中文(简体) ), JwtAccessClaims, (中文(简体) ), JwtVerifyConfig, (中文(简体) ), JwtSignConfig类型

extractToken 财务报告和审定财务报表 isValidAccessPayload 用于必须保持 DB 支持的服务 中间软件。 他们以前是私人的,所以Auth-service复制了他们—— 和副本 漂来漂去. 如果您需要使用不同错误消息的相同的检查, 请导入这些 而不是重新执行它们.

导入软件包也增加了 Express.Request 与 user, (中文(简体) ), auth,以及 requestId。删除任何本地副本 declare global 块或类型脚本 报告重复成员.

托肯合同

JwtAccessPayload 是服务所商定的唯一的形状。 改变它打破每一个 消费者——撞倒了主要版本.

许可证

麻省理工学院

版本与发布记录

@easyweb/authentication 共发布 4 个版本,首次发布于 2026/08/06;过去 12 个月发布了 4 个版本。

版本发布日期距今
2.2.0latest2026/08/272 个月前
2.1.02026/08/172 个月前
2.0.02026/08/063 个月前
1.0.02026/08/063 个月前

关于 @easyweb/authentication 的常见问题

@easyweb/authentication 是什么?

Easyweb 微服务共享认证原始:无国籍的 JWT 中间软件,请求上下文,以及符号验证帮助器

如何安装 @easyweb/authentication?

在项目目录运行 npm install @easyweb/authentication,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@easyweb/errors(^1.0.0)、@easyweb/logging(^1.0.0)、express(^5.0.0)、jsonwebtoken(^9.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@easyweb/authentication 支持 TypeScript 吗?

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

@easyweb/authentication 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@easyweb/authentication 需要什么版本的 Node.js?

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

@easyweb/authentication 可以商用吗?

@easyweb/authentication 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@easyweb/authentication 的下载量有多少?

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

@easyweb/authentication 还在维护吗?

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