casbin_rcba.go 749 字节
Newer Older
1 2 3
package middleware

import (
4
	"gin-vue-admin/global"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
5
	"gin-vue-admin/global/response"
6 7
	"gin-vue-admin/model/request"
	"gin-vue-admin/service"
8 9 10
	"github.com/gin-gonic/gin"
)

11
// 拦截器
12 13 14
func CasbinHandler() gin.HandlerFunc {
	return func(c *gin.Context) {
		claims, _ := c.Get("claims")
15
		waitUse := claims.(*request.CustomClaims)
16
		// 获取请求的URI
17
		obj := c.Request.URL.RequestURI()
18
		// 获取请求方法
19
		act := c.Request.Method
20
		// 获取用户的角色
21
		sub := waitUse.AuthorityId
22
		e := service.Casbin()
23
		// 判断策略中是否存在
24
		if global.GVA_CONFIG.System.Env == "develop" || e.Enforce(sub, obj, act) {
25 26
			c.Next()
		} else {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
27
			response.Result(response.ERROR, gin.H{}, "权限不足", c)
28 29 30 31 32
			c.Abort()
			return
		}
	}
}