You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OneAuth/docs/configuration.md

4.2 KiB

VBase 配置文档

本文档说明 VBase 系统的配置架构,包括本地配置文件和线上运行时配置。

配置分层

层级 存储位置 作用域 修改方式
本地配置 cfg/cfg.go + 配置文件 单实例 修改配置文件 + 重启
线上配置 数据库 settings 全局 管理后台/API 实时生效

一、本地配置Local Config

存储在 cfg/cfg.go,仅包含系统启动必需的配置项。默认使用 SQLite 内存数据库,无需任何外部依赖即可运行。

1.1 YAML 配置示例

# config.yaml 示例

db:
  type: "sqlite"                    # sqlite / mysql / postgres
  dsn: "/tmp/vbase.db"             # 数据库连接字符串
  prefix: "vb_"                    # 表名前缀

redis:
  addr: "memory"                   # memory内存模式或 redis://localhost:6379
  password: ""
  db: 0

key: "your-secret-key-change-in-production-min-32-characters"

jwt:
  secret: ""                       # JWT 密钥(为空则使用 Key
  access_expiry: 900               # Access Token 有效期(秒),默认 15m
  refresh_expiry: 2592000          # Refresh Token 有效期(秒),默认 30d
  issuer: "vbase"                  # JWT 签发者
  cookie_path: "/"                 # Cookie Path默认 / 全站
  cookie_prefix: "vb_"             # Cookie Key 前缀

init_admin:
  username: "admin"                # 管理员用户名
  password: ""                     # 密码(为空则首注成为 admin
  email: "admin@example.com"

1.2 配置项说明

配置项 类型 必填 默认值 说明
db.type string sqlite 数据库类型sqlite / mysql / postgres
db.dsn string /tmp/vbase.db 数据库连接字符串
db.prefix string vb_ 表名前缀
redis.addr string memory Redis 地址,memory 使用内存模式
redis.password string Redis 密码
redis.db int 0 Redis 数据库编号
key string 系统密钥,用于加密敏感数据(建议 32 位以上)
jwt.secret string JWT 密钥(为空则使用 key
jwt.access_expiry duration 15m Access Token 有效期
jwt.refresh_expiry duration 30d Refresh Token 有效期
jwt.issuer string vbase JWT 签发者名称
jwt.cookie_path string / Cookie Path 限定路径
jwt.cookie_prefix string vb_ Cookie Key 前缀

1.3 Token 传送方式

VBase 支持三种 Token 提取方式,优先级从高到低:

  1. CookieHttpOnly浏览器自动携带Key 为 {cookie_prefix}access
  2. Authorization HeaderBearer <token>
  3. Query 参数?access_token=<token>

1.4 初始管理员配置

系统提供两种互斥的初始化管理员方式:

方式 触发条件 适用场景
自动创建 init_admin.usernameinit_admin.password 均已配置 无人值守部署、容器化环境
首注成为 admin init_admin.password 为空 交互式部署、开发测试

方式一:配置 init_admin推荐用于生产

init_admin:
  username: "admin"
  password: "YourStrongPassword"
  email: "admin@example.com"

启动时自动创建管理员,后续注册的用户均为普通 user。

方式二:首个注册用户成为 admin默认行为

init_admin.password 为空时,第一个注册用户自动被授予 admin 角色。

1.5 运行时钩子

// OnUserCreate 用户创建成功后的回调钩子
// 可用于发送欢迎邮件、初始化用户资源等
cfg.OnUserCreate = func(userID string) error {
    // 自定义逻辑
    return nil
}

二、线上配置Settings

线上配置存储在数据库 settings 表中,通过管理后台或 API 实时修改,无需重启。

包括:应用名称、登录方式、密码字段配置、验证码开关、邮件/SMS 开关、OAuth 提供商等。

详见 API 的 /api/settings/api/info 接口。