配置
NuxtAuth 提供了广泛的配置选项,可以在 nuxt.config.ts
内部定义。您可以在下面找到一个完全配置的 authjs
应用的示例
export default defineNuxtConfig({
modules: ['@sidebase/nuxt-auth'],
auth: {
isEnabled: true,
disableServerSideAuth: false,
originEnvKey: 'AUTH_ORIGIN',
baseURL: 'http://localhost:3000/api/auth',
provider: { /* your provider config */ },
sessionRefresh: {
enablePeriodically: true,
enableOnWindowFocus: true,
}
}
})
isEnabled
- 类型:
boolean
- 默认值:
true
模块是否完全启用
originEnvKey
- 类型:
string
- 默认值:
AUTH_ORIGIN
保存应用程序来源的环境变量名称。这用于确定您的应用程序在生产环境中的来源。
默认情况下,NuxtAuth 将查看 AUTH_ORIGIN
环境变量和 runtimeConfig.authOrigin
。
提示
如果您想使用 runtimeConfig
和 NUXT_
前缀的环境变量,您需要确保也在 runtimeConfig
内部定义该键,否则 Nuxt 将不会识别您的环境变量 (issue #906,在此处阅读更多信息 here)。
export default defineNuxtConfig({
auth: {
originEnvKey: 'NUXT_YOUR_ORIGIN'
},
runtimeConfig: {
yourOrigin: ''
}
})
您可以在此处阅读有关 origin
和 baseURL
确定的更多信息。
disableServerSideAuth
- 类型:
boolean
- 默认值:
false
强制您的服务器在所有请求上发送“加载中”的身份验证状态,从而提示客户端执行 fetch 操作。如果您的网站有缓存,这将防止服务器缓存某人的身份验证状态。这会影响整个站点;对于特定于路由的规则,请在 routeRules
上添加 disableServerSideAuth
。在此处阅读更多信息 here。
baseURL
- 类型:
string | undefined
应用程序将运行的完整 URL,并结合身份验证路径。如果您想为您的应用程序静态设置 baseURL
,则应仅使用它。
您可以在此处阅读有关 origin
和 baseURL
确定的更多信息。
提示
如果您想在运行时覆盖 baseURL
,则可以使用 originEnvKey
。
provider
- 类型:
ProviderAuthjs | ProviderLocal
- 默认值:
undefined
身份验证提供商的配置。支持不同的提供商
sessionRefresh
- 类型:
SessionConfig | boolean
- 默认值:
{ enablePeriodically: false, enableOnWindowFocus: true, refreshHandler: RefreshHandler }
应用程序端会话的配置。您可以配置以下属性
enablePeriodically
- 类型:
boolean | number
- 默认值:
false
是否每 X
毫秒刷新会话。仅当会话已存在时才会进行刷新。将此设置为数字 X
将每 X
毫秒刷新会话。将其设置为 true
等效于 enablePeriodically: 1000
,会话将每秒刷新一次。将其设置为 false
将关闭会话刷新。
enableOnWindowFocus
- 类型:
boolean
- 默认值:
true
是否在每次浏览器窗口重新聚焦时刷新会话。
refreshHandler
- 类型:
string
- 默认值:
undefined
要自定义会话刷新,您可以提供刷新处理程序的路径。设置此选项后,将忽略 enablePeriodically
和 enableOnWindowFocus
。
自定义 RefreshHandler
需要 init
和 destroy
函数
init
将在 nuxt 应用程序挂载时调用。您可以在此处添加事件监听器并初始化自定义刷新行为。destroy
将在您的应用程序卸载时调用。您可以在此处运行清理例程,例如删除您的事件监听器。
export default defineNuxtConfig({
auth: {
sessionRefresh: {
// You can place it anywhere and name as you wish
handler: './config/AuthRefreshHandler'
}
}
})
import type { RefreshHandler } from '@sidebase/nuxt-auth'
// You may also use a plain object with `satisfies RefreshHandler`
class CustomRefreshHandler implements RefreshHandler {
init(): void {
console.info('Use the full power of the refreshHandler!')
}
destroy(): void {
console.info(
'Hover above class properties or go to their definition '
+ 'to learn more about how to craft a refreshHandler'
)
}
}
export default new CustomRefreshHandler()
如果未定义自定义 RefreshHandler,则将使用内置处理程序来处理刷新。
globalAppMiddleware
- 类型:
GlobalMiddlewareOptions | boolean
- 默认值:
false
是否添加全局身份验证中间件来保护所有页面。可以为 false
以禁用,true
以使用默认值启用,或使用对象以使用提供的选项启用。
- 如果您启用此项,则所有内容都将被保护,您可以通过指定
definePageMeta({ auth: false })
来有选择地禁用某些页面的保护 - 如果您禁用此项,则所有内容都将是公开的,您可以通过指定
definePageMeta({ auth: true })
来有选择地为某些页面启用保护
阅读有关保护页面的更多信息。