فهرست منبع

对RBAC鉴权模型自定义方法修改 完全支持 RESFTUL模式 支持/:params 占位符模式以及 ?query=地址栏参数模式

pixel 5 سال پیش
والد
کامیت
e9c0fe56a7
3فایلهای تغییر یافته به همراه24 افزوده شده و 7 حذف شده
  1. 15 0
      QMPlusServer/controller/api/sys_casbin.go
  2. 5 3
      QMPlusServer/model/sysModel/sys_casbin.go
  3. 4 4
      QMPlusServer/router/sys_casbin.go

+ 15 - 0
QMPlusServer/controller/api/sys_casbin.go

@@ -40,3 +40,18 @@ func GetPolicyPathByAuthorityId(c *gin.Context) {
 	paths := new(sysModel.CasbinModel).GetPolicyPathByAuthorityId(cmr.AuthorityId)
 	servers.ReportFormat(c, true, "获取规则成功", gin.H{"paths": paths})
 }
+
+// @Tags casbin
+// @Summary casb RBAC RESTFUL测试路由
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body api.CreateAuthorityParams true "获取权限列表"
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
+// @Router /casbin/CasbinTest [get]
+func CasbinTest(c *gin.Context) {
+	// 测试restful以及占位符代码  随意书写
+	pathParam := c.Param("pathParam")
+	query := c.Query("query")
+	servers.ReportFormat(c, true, "获取规则成功", gin.H{"pathParam": pathParam, "query": query})
+}

+ 5 - 3
QMPlusServer/model/sysModel/sys_casbin.go

@@ -5,6 +5,7 @@ import (
 	"gin-vue-admin/config"
 	"gin-vue-admin/init/qmsql"
 	"github.com/casbin/casbin"
+	"github.com/casbin/casbin/util"
 	gormadapter "github.com/casbin/gorm-adapter"
 	"strings"
 )
@@ -80,9 +81,10 @@ func (c *CasbinModel) clearCasbin(v int, p string) bool {
 }
 
 // 自定义规则函数
-func ParamsMatch(key1 string, key2 string) bool {
-	k1arr := strings.Split(key1, "?")
-	return k1arr[0] == key2
+func ParamsMatch(fullNameKey1 string, key2 string) bool {
+	key1 := strings.Split(fullNameKey1, "?")[0]
+	//剥离路径后再使用casbin的keyMatch2
+	return util.KeyMatch2(key1, key2)
 }
 
 // 自定义规则函数

+ 4 - 4
QMPlusServer/router/sys_casbin.go

@@ -7,10 +7,10 @@ import (
 )
 
 func InitCasbinRouter(Router *gin.RouterGroup) {
-	BaseRouter := Router.Group("casbin").Use(middleware.JWTAuth()).Use(middleware.CasbinHandler())
+	CasbinRouter := Router.Group("casbin").Use(middleware.JWTAuth()).Use(middleware.CasbinHandler())
 	{
-		BaseRouter.POST("casbinPUpdata", api.CasbinPUpdata)
-		BaseRouter.POST("getPolicyPathByAuthorityId", api.GetPolicyPathByAuthorityId)
-
+		CasbinRouter.POST("casbinPUpdata", api.CasbinPUpdata)
+		CasbinRouter.POST("getPolicyPathByAuthorityId", api.GetPolicyPathByAuthorityId)
+		CasbinRouter.GET("casbinTest/:pathParam", api.CasbinTest)
 	}
 }