Iris——整合Gorm持久化的Casbin的Example
生活随笔
收集整理的这篇文章主要介绍了
Iris——整合Gorm持久化的Casbin的Example
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
源代码:https://gitee.com/shentuzhigang/mini-project/tree/master/iris_demo/casbin_demo
Go Module
go get github.com/kataras/iris/v12 go get github.com/casbin/casbin/v2 go get gorm.io/gorm go get gorm.io/driver/mysql go get github.com/casbin/gorm-adapter/v3Example
package mainimport ("github.com/casbin/casbin/v2"gormadapter "github.com/casbin/gorm-adapter/v3"casbinMiddleware "github.com/iris-contrib/middleware/casbin""github.com/kataras/iris/v12""github.com/kataras/iris/v12/middleware/basicauth""gorm.io/driver/mysql""gorm.io/gorm" )func hi(ctx iris.Context) {ctx.Writef("Hello %s", casbinMiddleware.Subject(ctx)) }func newApp() *iris.Application {db, err := gorm.Open(mysql.New(mysql.Config{DSN: "root:123456@tcp(127.0.0.1:3306)/test",DontSupportRenameColumn: false,DontSupportRenameIndex: false,DisableDatetimePrecision: false,DefaultStringSize: 256,}), &gorm.Config{SkipDefaultTransaction: true})if err != nil {return nil}var a, _ = gormadapter.NewAdapterByDB(db)var Enforcer, _ = casbin.NewEnforcer("casbinmodel.conf", a)middleware := casbinMiddleware.New(Enforcer)app := iris.New()app.Logger().SetLevel("debug")app.Use(basicauth.Default(map[string]string{"bob": "bobpass","alice": "alicepass",}))app.Use(middleware.ServeHTTP)app.Get("/", hi)app.Get("/dataset1/{p:path}", hi) // p, alice, /dataset1/*, GETapp.Post("/dataset1/resource1", hi)app.Get("/dataset2/resource2", hi)app.Post("/dataset2/folder1/{p:path}", hi)app.Any("/dataset2/resource1", hi)return app }func main() {app := newApp()app.Listen(":8080") }参考文章
Iris + Casbin 权限控制实战
总结
以上是生活随笔为你收集整理的Iris——整合Gorm持久化的Casbin的Example的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Go——cron定时任务Demo
- 下一篇: LeetCode 4 寻找两个正序数组的