跳到内容

配置

NuxtAuth 提供了广泛的配置选项,可以在 nuxt.config.ts 内部定义。您可以在下面找到一个完全配置的 authjs 应用的示例

ts
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

提示

如果您想使用 runtimeConfigNUXT_ 前缀的环境变量,您需要确保也在 runtimeConfig 内部定义该键,否则 Nuxt 将不会识别您的环境变量 (issue #906,在此处阅读更多信息 here)。

ts
export default defineNuxtConfig({
  auth: {
    originEnvKey: 'NUXT_YOUR_ORIGIN'
  },
  runtimeConfig: {
    yourOrigin: ''
  }
})

您可以在此处阅读有关 originbaseURL 确定的更多信息。

disableServerSideAuth

  • 类型: boolean
  • 默认值: false

强制您的服务器在所有请求上发送“加载中”的身份验证状态,从而提示客户端执行 fetch 操作。如果您的网站有缓存,这将防止服务器缓存某人的身份验证状态。这会影响整个站点;对于特定于路由的规则,请在 routeRules 上添加 disableServerSideAuth。在此处阅读更多信息 here

baseURL

  • 类型: string | undefined

应用程序将运行的完整 URL,并结合身份验证路径。如果您想为您的应用程序静态设置 baseURL,则应仅使用它。

您可以在此处阅读有关 originbaseURL 确定的更多信息。

提示

如果您想在运行时覆盖 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

要自定义会话刷新,您可以提供刷新处理程序的路径。设置此选项后,将忽略 enablePeriodicallyenableOnWindowFocus

自定义 RefreshHandler 需要 initdestroy 函数

  • init 将在 nuxt 应用程序挂载时调用。您可以在此处添加事件监听器并初始化自定义刷新行为。
  • destroy 将在您的应用程序卸载时调用。您可以在此处运行清理例程,例如删除您的事件监听器。
ts
export default defineNuxtConfig({
  auth: {
    sessionRefresh: {
      // You can place it anywhere and name as you wish
      handler: './config/AuthRefreshHandler'
    }
  }
})
ts
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 }) 来有选择地为某些页面启用保护

阅读有关保护页面的更多信息。

根据 MIT 许可证发布。