Go-Role 项目使用教程
1. 项目目录结构及介绍
Go-Role 项目的目录结构如下:
go-role/
├── cmd/
│ └── main.go
├── config/
│ └── config.yaml
├── internal/
│ ├── permission/
│ │ ├── permission.go
│ │ └── permissioner.go
│ ├── role/
│ │ ├── role.go
│ │ └── role_manager.go
├── go.mod
├── go.sum
└── README.md
目录结构介绍
- cmd/: 包含项目的启动文件
main.go
。 - config/: 包含项目的配置文件
config.yaml
。 - internal/: 包含项目的内部逻辑代码。
- permission/: 包含权限相关的代码文件。
- role/: 包含角色管理相关的代码文件。
- go.mod: Go 模块文件,定义了项目的依赖关系。
- go.sum: Go 模块的校验文件,确保依赖的完整性和安全性。
- README.md: 项目的说明文档。
2. 项目的启动文件介绍
cmd/main.go
main.go
是 Go-Role 项目的启动文件,负责初始化项目并启动服务。以下是 main.go
的主要内容:
package main
import (
"fmt"
"github.com/Permify/go-role/internal/role"
"github.com/Permify/go-role/internal/permission"
)
func main() {
// 初始化角色管理器
roleManager := role.NewRoleManager()
// 初始化权限管理器
permissionManager := permission.NewPermissionManager()
// 注册角色
roleManager.Register("admin", func(user interface{}) bool {
// 角色检查逻辑
return true
})
// 启动服务
fmt.Println("Go-Role 服务已启动")
}
主要功能
- 初始化角色管理器: 使用
role.NewRoleManager()
初始化角色管理器。 - 初始化权限管理器: 使用
permission.NewPermissionManager()
初始化权限管理器。 - 注册角色: 使用
roleManager.Register()
方法注册角色,并定义角色的检查逻辑。 - 启动服务: 输出启动信息,表示服务已启动。
3. 项目的配置文件介绍
config/config.yaml
config.yaml
是 Go-Role 项目的配置文件,用于配置项目的运行参数。以下是 config.yaml
的内容示例:
server:
port: 8080
host: "localhost"
database:
driver: "mysql"
source: "user:password@tcp(127.0.0.1:3306)/dbname"
roles:
admin:
permissions:
- "read"
- "write"
user:
permissions:
- "read"
配置项说明
- server: 服务配置。
- port: 服务监听的端口号。
- host: 服务监听的主机地址。
- database: 数据库配置。
- driver: 数据库驱动类型。
- source: 数据库连接字符串。
- roles: 角色配置。
- admin: 管理员角色的权限列表。
- user: 普通用户的权限列表。
通过配置文件,可以灵活地调整项目的运行参数和角色权限设置。