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/README.md

100 lines
3.3 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# VBase
<p align="center">
<img src="https://img.shields.io/badge/Go-1.24+-00ADD8?style=flat-square&logo=go" alt="Go Version">
<img src="https://img.shields.io/badge/License-MIT-blue?style=flat-square" alt="License">
<img src="https://img.shields.io/badge/Framework-Vigo-orange?style=flat-square" alt="Framework">
</p>
<p align="center">
<b>基于 Golang 的高性能身份认证与权限管理基础框架</b>
</p>
<p align="center">
<a href="#快速开始">快速开始</a>
<a href="#核心特性">核心特性</a>
<a href="#集成指南">集成指南</a>
<a href="#api文档">API 文档</a>
<a href="#架构设计">架构设计</a>
</p>
---
## 简介
**VBase** 是一个基于 [Vigo](https://github.com/veypi/vigo) 框架开发的高性能后端基础框架提供一套标准化的用户管理、作用域权限控制Scoped RBAC和 OAuth2 认证服务。支持 Session + JWT 双 Token 认证、Cookie 令牌传送和短信/邮箱验证码注册。可作为独立服务部署,也可作为基础库集成到你的 Go 项目中。
## 核心特性
- **完整认证体系** — Session + JWTAccess + Refresh TokenHttpOnly Cookie / Header / Query 多通道传送
- **Scoped RBAC 权限控制** — 基于作用域Scope的角色访问控制支持多应用权限隔离
- **层级权限管理** — 支持资源类型(奇数层)和实例(偶数层)的精细化权限控制
- **OAuth2 Provider** — 完整的 OAuth2 服务端实现,支持第三方应用接入
- **多因素认证** — 短信/邮箱验证码注册和验证
- **多数据库支持** — SQLite默认、MySQL、PostgreSQL 自动适配
- **嵌入式管理界面** — 基于 vhtml 的管理后台,开箱即用
- **API 文档** — 内置 `/_api.json` 接口文档端点
- **高性能** — 基于洋葱模型中间件架构Redis 缓存 Session 验证
## 快速开始
### 安装
```bash
go get github.com/veypi/vbase
```
### 作为独立服务运行
```bash
# 克隆项目
git clone https://github.com/veypi/vbase.git
cd vbase
# 直接启动(默认 SQLite + 端口 4000
go run ./cli/*.go -p 4000
# 或使用 Makefile
make run
```
服务默认在 `http://localhost:4000` 启动,管理界面访问 `/vb/` 路径API 文档访问 `/_api.json`
### 作为库集成
```go
package main
import (
"github.com/veypi/vbase"
"github.com/veypi/vbase/cfg"
"github.com/veypi/vigo"
)
func main() {
app := vigo.New("myapp", vbase.Router, cfg.Global, vigo.WithInit(vbase.Init))
panic(app.Run())
}
```
更多集成方式请参考 [集成指南](./docs/integration.md)。
## 项目结构
```
vbase/
├── api/ # REST API 接口层
│ ├── auth/ # 认证接口登录、注册、Token 刷新)
│ ├── oauth/ # OAuth2 Provider 接口
│ ├── role/ # 角色管理
│ ├── user/ # 用户管理
│ ├── settings/ # 系统设置接口
│ └── verification/ # 验证码接口
├── auth/ # 核心权限控制模块Scoped RBAC + Session 管理)
├── cfg/ # 配置管理
├── cli/ # 命令行入口
├── models/ # 数据模型GORM
├── ui/ # 前端管理界面vhtml
└── docs/ # 文档
```