feat(server): 添加认证授权和日志记录功能
- 实现了 JWT 认证中间件,支持 token 验证和白名单路由 - 添加了登录接口,支持用户登录和 token 生成 - 集成了 log4js 日志系统,支持 mysql 和 koa 日志分类 - 配置了环境变量支持,添加了 SECRET_KEY 配置 - 重构了 MySQL 连接池配置,添加了查询日志记录 - 集成了 koa 路由和认证中间件,实现接口访问控制
This commit is contained in:
26
module/server/koa/auth.js
Normal file
26
module/server/koa/auth.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import jwt from "jsonwebtoken";
|
||||
import * as log4js from "../log4js.js";
|
||||
|
||||
const whiteList = [
|
||||
'/',
|
||||
'/api/login',
|
||||
]
|
||||
|
||||
async function auth(ctx, next) {
|
||||
try {
|
||||
log4js.koa.debug("接口请求:", ctx.path)
|
||||
if (whiteList.includes(ctx.path)) {
|
||||
await next();
|
||||
return; // 终止后续验证逻辑
|
||||
}
|
||||
const token = ctx.request.headers.authorization?.split(' ')[1];
|
||||
if (!token) throw new Error('无token');
|
||||
ctx.user = jwt.verify(token, process.env.SECRET_KEY);
|
||||
await next();
|
||||
} catch (err) {
|
||||
ctx.status = 401;
|
||||
ctx.body = {msg: 'token无效或过期', code: 401};
|
||||
}
|
||||
}
|
||||
|
||||
export default auth;
|
||||
Reference in New Issue
Block a user