32 lines
883 B
TypeScript
32 lines
883 B
TypeScript
import consola from "consola";
|
||
export default defineEventHandler(event => {
|
||
// 跳过无需验证的路由
|
||
if (event.path?.startsWith('/api/auth')) return
|
||
const {defaultToken} = useRuntimeConfig()
|
||
|
||
const token = getHeader(event, 'Authorization')?.split('Bearer ')[1];
|
||
const t = generateAccessToken({
|
||
...defaultToken,
|
||
isTrue: false
|
||
})
|
||
// consola.info(`Token ${t}`);
|
||
|
||
if (!t) {
|
||
throw createError({
|
||
statusCode: 401,
|
||
statusMessage: '未提供认证Token'
|
||
})
|
||
}
|
||
|
||
try {
|
||
// 验证JWT(示例使用jsonwebtoken)
|
||
const verified = verifyToken(t) // 你的验证逻辑
|
||
event.context.auth = verified // 将用户信息挂载到上下文
|
||
} catch (e) {
|
||
throw createError({
|
||
statusCode: 401,
|
||
statusMessage: '无效Token'
|
||
})
|
||
}
|
||
})
|