package main
import (
"fmt"
"github.com/casbin/casbin"
"github.com/casbin/gorm-adapter"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql"
)
func main() {
a := gormadapter.NewAdapter("mysql", "root:123456@tcp(127.0.0.1:3306)/mydb", true)
e := casbin.NewEnforcer("rabc.conf", a)
//从DB加载策略
e.LoadPolicy()
//获取router路由对象
r := gin.New()
//使用自定义拦截器中间件
r.Use(LanjieqiHandler(e))
//创建请求
r.GET("/api/v1/aa", func(c *gin.Context) {
fmt.Println("Hello 接收到GET请求..")
})
r.Run(":9090") //参数为空 默认监听8080端口
}
//拦截器
func LanjieqiHandler(e *casbin.Enforcer) gin.HandlerFunc {
return func(c *gin.Context) {
//获取请求的URI
obj := c.Request.URL.RequestURI()
//获取请求方法
act := c.Request.Method
//获取用户的角色
sub := "admin"
//判断策略中是否存在
if e.Enforce(sub, obj, act) {
fmt.Println("通过权限")
c.Next()
Casbin+Gin+GROM 搭建权限控制小Demo
最新推荐文章于 2024-08-13 08:38:21 发布
本文将展示如何结合Casbin权限管理库、Gin web框架和GORM ORM工具,搭建一个简单的权限控制演示项目。在数据库中验证权限,若无相应记录,则通过拦截器阻止访问。
摘要由CSDN通过智能技术生成