在Nuxt.js SSR应用中,API安全机制的实现是保障系统安全的关键环节。本文将深入探讨JWT认证与权限验证在服务端的完整实现方案。
JWT认证实现 首先,在plugins/jwt.js中创建认证插件:
import { defineNuxtPlugin } from '#app'
import jwt from 'jsonwebtoken'
export default defineNuxtPlugin(() => {
return {
provide: {
jwt: {
verify(token) {
return jwt.verify(token, process.env.JWT_SECRET)
},
sign(payload) {
return jwt.sign(payload, process.env.JWT_SECRET, { expiresIn: '1h' })
}
}
}
}
})
服务端路由保护 在server/api/auth/login.post.js中实现登录验证:
export default defineEventHandler(async (event) => {
const { username, password } = await readBody(event)
// 验证用户凭据
if (username === 'admin' && password === 'password') {
const token = useNuxtApp().$jwt.sign({ username })
return { token }
}
throw createError({ statusCode: 401, message: 'Invalid credentials' })
})
中间件验证 创建middleware/auth.js中间件:
export default defineNuxtMiddleware((event) => {
const token = event.node.req.headers.authorization?.replace('Bearer ', '')
if (!token) {
throw createError({ statusCode: 401, message: 'Access denied' })
}
try {
const decoded = useNuxtApp().$jwt.verify(token)
event.context.user = decoded
} catch (error) {
throw createError({ statusCode: 403, message: 'Invalid token' })
}
})
通过在nuxt.config.js中配置中间件,确保所有受保护路由都经过认证验证,从而构建起完整的SSR安全防护体系。

讨论