get
go
package main
import (
"fmt"
"log"
"github.com/casbin/casbin/v2"
"github.com/casbin/gorm-adapter/v3"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func main() {
// 初始化数据库和 Casbin
db, _ := gorm.Open(sqlite.Open("casbin.db"), &gorm.Config{})
adapter, _ := gormadapter.NewAdapterByDB(db)
enforcer, _ := casbin.NewEnforcer("rbac_model.conf", adapter)
// 假设用户 alice
user := "alice"
// 获取用户直接权限
directPolicies := enforcer.GetFilteredPolicy(0, user)
fmt.Println("直接权限:", directPolicies)
// 获取用户角色
roles := enforcer.GetFilteredGroupingPolicy(0, user)
fmt.Println("用户角色:", roles)
// 获取角色权限
var rolePolicies [][]string
for _, role := range roles {
roleName := role[1]
policies := enforcer.GetFilteredPolicy(0, roleName)
rolePolicies = append(rolePolicies, policies...)
}
fmt.Println("角色权限:", rolePolicies)
// 合并权限
allPolicies := append(directPolicies, rolePolicies...)
fmt.Println("所有权限:", allPolicies)
}