@lytjs/middleware-auth 6.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -0
- package/dist/index.cjs +29 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.mjs +27 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +60 -0
package/README.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# @lytjs/middleware-auth
|
|
2
|
+
|
|
3
|
+
> LytJS 认证中间件。
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@lytjs/middleware-auth)
|
|
6
|
+
[](https://gitee.com/lytjs/lytjs/blob/main/LICENSE)
|
|
7
|
+
|
|
8
|
+
## 简介
|
|
9
|
+
|
|
10
|
+
`@lytjs/middleware-auth` 是 LytJS 框架的认证中间件,提供灵活的认证机制。
|
|
11
|
+
|
|
12
|
+
### 核心特性
|
|
13
|
+
|
|
14
|
+
- **Token 验证**:支持 Bearer Token 和其他认证方式
|
|
15
|
+
- **可自定义验证逻辑**:支持自定义验证函数
|
|
16
|
+
- **用户信息注入**:在上下文中注入用户信息
|
|
17
|
+
- **零依赖**:不引入任何外部依赖
|
|
18
|
+
|
|
19
|
+
## 安装
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install @lytjs/middleware-auth
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
或使用 pnpm:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
pnpm add @lytjs/middleware-auth
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 许可证
|
|
32
|
+
|
|
33
|
+
MIT License - [查看许可证](https://gitee.com/lytjs/lytjs/blob/main/LICENSE)
|
|
34
|
+
|
|
35
|
+
## 贡献指南
|
|
36
|
+
|
|
37
|
+
欢迎提交 Issue 和 Pull Request!
|
|
38
|
+
|
|
39
|
+
- [Gitee 仓库](https://gitee.com/lytjs/lytjs)
|
|
40
|
+
- [问题反馈](https://gitee.com/lytjs/lytjs/issues)
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/auth.ts
|
|
4
|
+
function createAuthMiddleware(options) {
|
|
5
|
+
const headerName = options.headerName || "Authorization";
|
|
6
|
+
return async (request, ctx, next) => {
|
|
7
|
+
const authHeader = request.headers.get(headerName) || "";
|
|
8
|
+
const token = authHeader.startsWith("Bearer ") ? authHeader.slice(7) : authHeader;
|
|
9
|
+
if (!token) {
|
|
10
|
+
return new Response(JSON.stringify({ error: "\u672A\u6388\u6743" }), {
|
|
11
|
+
status: 401,
|
|
12
|
+
headers: { "Content-Type": "application/json" }
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
const user = await options.authenticate(token);
|
|
16
|
+
if (!user) {
|
|
17
|
+
return new Response(JSON.stringify({ error: "\u672A\u6388\u6743" }), {
|
|
18
|
+
status: 401,
|
|
19
|
+
headers: { "Content-Type": "application/json" }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
ctx.user = user;
|
|
23
|
+
await next();
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
exports.createAuthMiddleware = createAuthMiddleware;
|
|
28
|
+
//# sourceMappingURL=index.cjs.map
|
|
29
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/auth.ts"],"names":[],"mappings":";;;AAYO,SAAS,qBAAqB,OAAA,EAAkC;AACrE,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,IAAc,eAAA;AAEzC,EAAA,OAAO,OAAO,OAAA,EAAkB,GAAA,EAAwB,IAAA,KAA8B;AACpF,IAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAA,IAAK,EAAA;AACtD,IAAA,MAAM,KAAA,GAAQ,WAAW,UAAA,CAAW,SAAS,IAAI,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA,GAAI,UAAA;AAEvE,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAI,SAAS,IAAA,CAAK,SAAA,CAAU,EAAE,KAAA,EAAO,oBAAA,EAAO,CAAA,EAAG;AAAA,QACpD,MAAA,EAAQ,GAAA;AAAA,QACR,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,OAC/C,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,YAAA,CAAa,KAAK,CAAA;AAE7C,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,IAAI,SAAS,IAAA,CAAK,SAAA,CAAU,EAAE,KAAA,EAAO,oBAAA,EAAO,CAAA,EAAG;AAAA,QACpD,MAAA,EAAQ,GAAA;AAAA,QACR,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,OAC/C,CAAA;AAAA,IACH;AAEA,IAAA,GAAA,CAAI,IAAA,GAAO,IAAA;AACX,IAAA,MAAM,IAAA,EAAK;AAAA,EACb,CAAA;AACF","file":"index.cjs","sourcesContent":["/**\n * 认证中间件实现\n */\nimport type { AuthOptions } from './types';\nimport type { Middleware, MiddlewareContext } from '@lytjs/middleware';\n\n/**\n * 创建认证中间件\n *\n * @param options - 认证配置选项\n * @returns 认证中间件函数\n */\nexport function createAuthMiddleware(options: AuthOptions): Middleware {\n const headerName = options.headerName || 'Authorization';\n\n return async (request: Request, ctx: MiddlewareContext, next: () => Promise<void>) => {\n const authHeader = request.headers.get(headerName) || '';\n const token = authHeader.startsWith('Bearer ') ? authHeader.slice(7) : authHeader;\n\n if (!token) {\n return new Response(JSON.stringify({ error: '未授权' }), {\n status: 401,\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n const user = await options.authenticate(token);\n\n if (!user) {\n return new Response(JSON.stringify({ error: '未授权' }), {\n status: 401,\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n ctx.user = user;\n await next();\n };\n}\n"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// src/auth.ts
|
|
2
|
+
function createAuthMiddleware(options) {
|
|
3
|
+
const headerName = options.headerName || "Authorization";
|
|
4
|
+
return async (request, ctx, next) => {
|
|
5
|
+
const authHeader = request.headers.get(headerName) || "";
|
|
6
|
+
const token = authHeader.startsWith("Bearer ") ? authHeader.slice(7) : authHeader;
|
|
7
|
+
if (!token) {
|
|
8
|
+
return new Response(JSON.stringify({ error: "\u672A\u6388\u6743" }), {
|
|
9
|
+
status: 401,
|
|
10
|
+
headers: { "Content-Type": "application/json" }
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
const user = await options.authenticate(token);
|
|
14
|
+
if (!user) {
|
|
15
|
+
return new Response(JSON.stringify({ error: "\u672A\u6388\u6743" }), {
|
|
16
|
+
status: 401,
|
|
17
|
+
headers: { "Content-Type": "application/json" }
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
ctx.user = user;
|
|
21
|
+
await next();
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { createAuthMiddleware };
|
|
26
|
+
//# sourceMappingURL=index.mjs.map
|
|
27
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/auth.ts"],"names":[],"mappings":";AAYO,SAAS,qBAAqB,OAAA,EAAkC;AACrE,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,IAAc,eAAA;AAEzC,EAAA,OAAO,OAAO,OAAA,EAAkB,GAAA,EAAwB,IAAA,KAA8B;AACpF,IAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAA,IAAK,EAAA;AACtD,IAAA,MAAM,KAAA,GAAQ,WAAW,UAAA,CAAW,SAAS,IAAI,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA,GAAI,UAAA;AAEvE,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAI,SAAS,IAAA,CAAK,SAAA,CAAU,EAAE,KAAA,EAAO,oBAAA,EAAO,CAAA,EAAG;AAAA,QACpD,MAAA,EAAQ,GAAA;AAAA,QACR,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,OAC/C,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,YAAA,CAAa,KAAK,CAAA;AAE7C,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,IAAI,SAAS,IAAA,CAAK,SAAA,CAAU,EAAE,KAAA,EAAO,oBAAA,EAAO,CAAA,EAAG;AAAA,QACpD,MAAA,EAAQ,GAAA;AAAA,QACR,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,OAC/C,CAAA;AAAA,IACH;AAEA,IAAA,GAAA,CAAI,IAAA,GAAO,IAAA;AACX,IAAA,MAAM,IAAA,EAAK;AAAA,EACb,CAAA;AACF","file":"index.mjs","sourcesContent":["/**\n * 认证中间件实现\n */\nimport type { AuthOptions } from './types';\nimport type { Middleware, MiddlewareContext } from '@lytjs/middleware';\n\n/**\n * 创建认证中间件\n *\n * @param options - 认证配置选项\n * @returns 认证中间件函数\n */\nexport function createAuthMiddleware(options: AuthOptions): Middleware {\n const headerName = options.headerName || 'Authorization';\n\n return async (request: Request, ctx: MiddlewareContext, next: () => Promise<void>) => {\n const authHeader = request.headers.get(headerName) || '';\n const token = authHeader.startsWith('Bearer ') ? authHeader.slice(7) : authHeader;\n\n if (!token) {\n return new Response(JSON.stringify({ error: '未授权' }), {\n status: 401,\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n const user = await options.authenticate(token);\n\n if (!user) {\n return new Response(JSON.stringify({ error: '未授权' }), {\n status: 401,\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n ctx.user = user;\n await next();\n };\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lytjs/middleware-auth",
|
|
3
|
+
"version": "6.6.0",
|
|
4
|
+
"description": "LytJS 认证中间件",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.mjs",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.mjs",
|
|
13
|
+
"require": "./dist/index.cjs"
|
|
14
|
+
},
|
|
15
|
+
"./package.json": "./package.json"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md",
|
|
20
|
+
"LICENSE"
|
|
21
|
+
],
|
|
22
|
+
"sideEffects": false,
|
|
23
|
+
"scripts": {
|
|
24
|
+
"dev": "tsup --watch",
|
|
25
|
+
"build": "tsup",
|
|
26
|
+
"test": "vitest run",
|
|
27
|
+
"test:watch": "vitest",
|
|
28
|
+
"test:coverage": "vitest run --coverage",
|
|
29
|
+
"type-check": "tsc --noEmit",
|
|
30
|
+
"lint": "eslint \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
31
|
+
"clean": "rm -rf dist node_modules .turbo"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@lytjs/common-is": "workspace:*",
|
|
35
|
+
"@lytjs/middleware": "workspace:*"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"tsup": "^8.3.6",
|
|
39
|
+
"typescript": "^5.7.3",
|
|
40
|
+
"vitest": "^3.0.0"
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {},
|
|
43
|
+
"publishConfig": {
|
|
44
|
+
"access": "public",
|
|
45
|
+
"registry": "https://registry.npmjs.org/"
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "https://gitee.com/lytjs/lytjs.git",
|
|
50
|
+
"directory": "packages/ecosystem/packages/web-framework/packages/middleware-auth"
|
|
51
|
+
},
|
|
52
|
+
"keywords": [
|
|
53
|
+
"lytjs",
|
|
54
|
+
"middleware",
|
|
55
|
+
"auth",
|
|
56
|
+
"authentication"
|
|
57
|
+
],
|
|
58
|
+
"author": "LytJS Team",
|
|
59
|
+
"license": "MIT"
|
|
60
|
+
}
|