Iris——整合Gorm持久化的Casbin的Example
生活随笔
收集整理的這篇文章主要介紹了
Iris——整合Gorm持久化的Casbin的Example
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
源代碼: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 權(quán)限控制實(shí)戰(zhàn)
總結(jié)
以上是生活随笔為你收集整理的Iris——整合Gorm持久化的Casbin的Example的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go——cron定时任务Demo
- 下一篇: LeetCode 4 寻找两个正序数组的