增加casbin权限验证配置

pull/30/head
taoshihan1991 4 years ago
parent 2f13adfa91
commit 7080589568

@ -1,2 +0,0 @@
p, alice, data1, read
p, bob, data2, write
1 p alice data1 read
2 p bob data2 write

@ -0,0 +1,2 @@
p, admin, /mysql, GET
p, admin, /mysql, POST
1 p admin /mysql GET
2 p admin /mysql POST

@ -1,9 +1,30 @@
package middleware
import (
"fmt"
"github.com/casbin/casbin/v2"
"github.com/gin-gonic/gin"
"log"
)
func CasbinACL(c *gin.Context){
_, _ := casbin.NewEnforcer("config/model.conf", "config/policy.csv")
sub, _ :=c.Get("user")
obj:=c.Request.RequestURI
act:=c.Request.Method
e, err := casbin.NewEnforcer("config/model.conf", "config/policy.csv")
log.Println(sub,obj,act,err)
ok,err:=e.Enforce(sub,obj,act)
if err!=nil{
c.JSON(200, gin.H{
"code": 403,
"msg": "没有权限:"+err.Error(),
})
c.Abort()
}
if !ok{
c.JSON(200, gin.H{
"code": 403,
"msg": fmt.Sprintf("没有权限:%s,%s,%s",sub,obj,act),
})
c.Abort()
}
}

@ -34,4 +34,5 @@ func JwtApiMiddleware(c *gin.Context){
})
c.Abort()
}
c.Set("user",userinfo["name"])
}

@ -1,17 +1,17 @@
# go-imap
邮箱imap网页版客户端工具基于GO语言实现。
# go-fly
基于GO语言实现的即时通讯与管理系统工具集
1.使用第三方类库go-imap解析imap协议
1.使用gin http框架实现restful风格的API
2.使用http包 template包实现http服务下的网页展示
2.使用jwt-go实现无状态的jwt登陆认证
3.使用goroutine在主界面并发请求左右栏的数据
3.使用casbin实现权限控制
4.使用text/net包下的encoding和transform等配合解决乱码问题
4.使用gin以及template包的模板语法进行展示界面
5.使用go modoule解决依赖问题
6.充分实践了structinterfacemapslicefor range等基础知识
6.充分实践了structinterfacemapslicefor range,groutine等基础知识
### 项目预览
@ -24,7 +24,7 @@
### 安装使用
1.在$GOPATH的src/github.com下 git clone https://github.com/taoshihan1991/imaptool.git
1.在go get github.com/taoshihan1991/go-fly ,进入$GOPATH/src/github.com/taoshihan1991/go-fly 目录
2.源码运行 go run server.go

@ -35,8 +35,8 @@ func main() {
engine.GET("/setting", tmpl.PageSetting)
//设置mysql
engine.GET("/setting_mysql", tmpl.PageSettingMysql)
engine.GET("/mysql",middleware.JwtApiMiddleware, controller.MysqlGetConf)
engine.POST("/mysql",middleware.JwtApiMiddleware, controller.MysqlSetConf)
engine.GET("/mysql",middleware.JwtApiMiddleware,middleware.CasbinACL, controller.MysqlGetConf)
engine.POST("/mysql",middleware.JwtApiMiddleware,middleware.CasbinACL, controller.MysqlSetConf)
//------------------old code-----------------------------
mux := &http.ServeMux{}
//根路径

Loading…
Cancel
Save