模块设置

本模块提供了一系列设置项,这些设置项可以对模块的各个功能进行调整。

🎉 编辑以下设置项均有代码提示和注释。

全局设置

nuxt.config.ts

本模块在 nuxt.config.ts 中提供了一些设置项,以便选择性调整模块的默认行为,可用设置项如下:

export default defineNuxtConfig({
  fastAuth: {
    /**
     * 认证提供者
     * @description 可选 "local" 活 "refresh",这两的区别在于是否有 token刷新 机制
     * @default "local"
     */
    provider: "refresh",
  },
});

app.config.ts

本模块在 app.config.ts 中提供了一些设置项,以便选择性禁用模板的默认行为,可用设置项如下:

export default defineAppConfig({
  fastAuth: {
    /**
     * 认证提供者配置
     */
    provider: {
      /**
       * 页面聚焦时刷新令牌
       * @description 当窗口重新获得焦点时刷新令牌
       * @default true
       */
      refreshOnWindowFocus: true,
      /**
       * 刷新令牌有效时间
       * @description 刷新令牌有效时间,单位为毫秒
       * @default 256 * 24 * 60 * 60 * 1000
       */
      refreshTokenExpires: 256 * 24 * 60 * 60 * 1000,
      /**
       * 默认令牌有效时间
       * @description 令牌有效时间,单位为毫秒
       * @default 256 * 24 * 60 * 60 * 1000
       */
      tokenExpires: 256 * 24 * 60 * 60 * 1000,
      /**
       * 令牌刷新时间
       * @description 在令牌过期前多久刷新令牌,单位为毫秒
       * @default 5 * 60 * 1000
       */
      tokenRefresh: 5 * 60 * 1000,
    },
    /**
     * 会话(用户信息)配置
     * @description 会话配置
     */
    session: {
      /**
       * 当窗口获得焦点时刷新会话
       * @default false
       */
      refreshOnWindowFocus: false,
      /**
       * 定时刷新会话的时间间隔,单位为毫秒
       * - `0` 表示禁用定时刷新
       * - `number` 表示启用定时刷新,且指定时间间隔
       * @default 0
       */
      refreshPeriodically: 0,
    },
    /**
     * 页面配置
     * @description 页面配置
     */
    page: {
      /**
       * 默认页面鉴权元数据
       * @default
       * ```json
       * {
       *  "auth": false,
       *  "redirect": {
       *   "unAuth": true,
       *   "passed": false,
       *   "failed": true
       *  }
       * }
       * ```
       */
      auth: {
        /**
         * 需要的权限
         * @default false
         */
        auth: false,
        /**
         * 重定向配置
         */
        redirect: {
          /**
           * 未登录重定向
           * @description 未登录重定向
           * @default true
           */
          anonymous: true,
          /**
           * 鉴权通过重定向
           * @description 鉴权通过重定向
           * @default false
           */
          passed: false,
          /**
           * 鉴权失败重定向
           * @description 鉴权失败重定向
           * @default true
           */
          failed: true,
        },
      },
    },
    /**
     * 首页路径
     * @description 登录成功后重定向的路径
     * @default "/"
     */
    home: "/",
    /**
     * 认证页路径
     * @default "/auth"
     */
    signIn: "/auth",
    /**
     * 退出登录页路径
     * @default "/auth"
     */
    signOut: "/auth",
  },
});

全局钩子

本模块提供一些钩子,用于配置模块的默认行为,可用的钩子如下:

export default defineNuxtPlugin({
  // 必须配置此项
  enforce: "pre",
  hooks: {
    /**
     * 注册
     * @param form 注册表单
     */
    "fast-auth:sign-up": (form) => {
      // 一些注册操作
    },
    /**
     * 登录
     * @param form 登录表单
     * @param result 令牌 | 登录结果
     */
    "fast-auth:sign-in": (form, result) => {
      // 一些登录操作
      // 设置 token
      result.value = "token-admin";
    },
    /**
     * 注销
     */
    "fast-auth:sign-out": (user, token) => {
      // 一些清理操作,user 和 token 自动清理(无需手动清理)
    },
    /**
     * 获取用户
     * @param token 令牌
     * @param result 用户信息
     */
    "fast-auth:get-user": (token, result) => {
      // 设置用户信息
      result.value = {};
    },
    /**
     * 获取角色列表
     * @description 即从用户信息中获取角色列表
     * @param user 用户信息
     * @param result 角色列表
     */
    "fast-auth:get-roles": (user, result) => {
      // 设置角色列表
      result.value = [];
    },
    /**
     * 获取权限列表
     * @description 即从用户信息中获取权限列表
     * @param user 用户信息
     * @param role 角色信息
     * @param result 权限列表
     */
    "fast-auth:get-permissions": (user, role, result) => {
      result.value = [];
    },
    /**
     * 刷新令牌
     * @param token 令牌
     * @param refreshToken 刷新令牌
     * @param result 刷新结果
     */
    "fast-auth:refresh-token": (token, refreshToken, result) => {
      // 设置新的 token
      result.value = "new-token";
    },
    /**
     * 前置认证钩子
     * @param options 选项
     * @param result 跳转 | null
     * @description 返回值为 null 时继续路由守卫
     * @description 返回值为 undefined 时终止路由守卫
     * @description 注意:不写返回值时默认返回 undefined
     */
    "fast-auth:before-auth": (options, result) => {},
    /**
     * 无需认证
     * @param options 选项
     * @param result 跳转 | null
     * @description 返回值为 null 时继续路由守卫
     * @description 返回值为 undefined 时终止路由守卫
     * @description 注意:不写返回值时默认返回 undefined
     */
    "fast-auth:auth-through": (options, result) => {},
    /**
     * 需要认证但未登录
     * @param options 选项
     * @param result 跳转 | null
     * @description 返回值为 null 时继续路由守卫
     * @description 返回值为 undefined 时终止路由守卫
     * @description 注意:不写返回值时默认返回 undefined
     */
    "fast-auth:auth-anonymous": (options, result) => {},
    /**
     * 需要鉴权且已通过
     * @param options 选项
     * @param result 跳转 | null
     * @description 返回值为 null 时继续路由守卫
     * @description 返回值为 undefined 时终止路由守卫
     * @description 注意:不写返回值时默认返回 undefined
     */
    "fast-auth:auth-passed": (options, result) => {},
    /**
     * 需要鉴权但未通过
     * @param options 选项
     * @param result 跳转 | null
     * @description 返回值为 null 时继续路由守卫
     * @description 返回值为 undefined 时终止路由守卫
     * @description 注意:不写返回值时默认返回 undefined
     */
    "fast-auth:auth-failed": (options, result) => {},
    /**
     * 后置认证钩子
     * @param options 选项
     * @param result 跳转 | null
     * @description 返回值为 null 时继续路由守卫
     * @description 返回值为 undefined 时终止路由守卫
     * @description 注意:不写返回值时默认返回 undefined
     */
    "fast-auth:after-auth": (options, result) => {},
  },
});

页面设置

definePageMeta

本模块扩展了 nuxtdefinePageMeta 参数,针对页面调整模块行为可在这里进行修改。

definePageMeta({
  auth: {
    /**
     * 需要的权限
     * @default false
     */
    auth: [
      "|",
      {
        type: "role",
        value: "admin",
      },
      {
        type: "per",
        value: "users:view",
      },
      // per 的简写
      "users:add",
    ],
    /**
     * 重定向配置
     */
    redirect: {
      /**
       * 未登录重定向
       * @description 未登录重定向
       * @default true
       */
      anonymous: "/auth",
      /**
       * 鉴权通过重定向
       * @description 鉴权通过重定向
       * @default false
       */
      passed: "/admin",
      /**
       * 鉴权失败重定向
       * @description 鉴权失败重定向
       * @default true
       */
      failed: "/auth",
    },
  },
});