第五天核心任务:权限校验链路闭环
第五天的开发聚焦于权限控制的核心实现,完成了角色权限中间件的开发,实现了接口级别的权限校验,并基于事务控制确保用户权限操作的数据一致性。通过这部分工作,系统的权限管理从设计阶段正式进入可运行阶段,为后续业务模块的安全接入提供了坚实基础。
一、角色权限中间件
1. 中间件完整代码
func RequirePermission() gin.HandlerFunc {return func(c *gin.Context) {// 新建数据库连接实例db := postgresqldb.GetDB()// 1. 获取当前请求的路径和方法path := c.FullPath()fmt.Println("请求路径:", path)// 2. 查询该接口所需的权限IDvar interfacePerm postgresql.InterfacePermissionReferr := db.Where("name = ? AND is_delete = 0", path).First(&interfacePerm).Error// 接口未配置权限,直接通过(无需权限校验)if err != nil && err == gorm.ErrRecordNotFound {c.Next()return}if err != nil {response.InternalServerError(c, "查询接口权限配置失败")c.Abort()return}// 3. 接口配置了权