欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Iris——整合Gorm持久化的Casbin的Example

发布时间:2024/10/5 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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/v3

Example

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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。