Nuxt Csurf
Cross-Site Request Forgery (CSRF) prevention.
Create a middleware for CSRF token creation and validation.
✅ Supports Node.js server & serverless environments
✅ Supports both universal and client-side rendering (ssr: true|false
)
✅ Per-route configuration
✅ TypeScript
Installation
npx nuxi@latest module add csurf
Global configuration
export default defineNuxtConfig({
modules: ['nuxt-csurf'],
csurf: {
https: false,
cookieKey: '',
cookie: {
path: '/',
httpOnly: true,
sameSite: 'strict'
},
methodsToProtect: ['POST', 'PUT', 'PATCH'],
encryptSecret: ,
encryptAlgorithm: 'aes-256-cbc',
addCsrfTokenToEventCtx: true,
headerName: 'csrf-token'
}
})
Per route configuration
To enable per-route configuration, use the routeRules like following:
export default defineNuxtConfig({
routeRules: {
'/api/nocsrf': {
csurf: false
},
'/api/test': {
csurf: {
methodsToProtect: ['POST']
}
}
}
})
useCsrfFetch
This composable provides a convenient wrapper around useFetch
. It automatically adds the CSRF token in headers.
const { data, pending, error, refresh } = useCsrfFetch('/api/login', { query: param1: 'value1' })
$csrfFetch
This helper provides a convenient wrapper around $fetch
. It automatically adds the CSRF token in headers.
const { $csrfFetch } = useNuxtApp()
const { data } = await $csrfFetch('/api/login', { method: 'POST', body: …, headers: … })
useCsrf
Use this composable if you need to access to the CSRF token value.
const { csrf } = useCsrf()
console.log(csrf)
Credits