我正在使用杜松子酒框架。我有一个包含一些课程信息的数据库。用户可以在课程中注册并访问内容。内容包括图像、视频和音频。我将这些内容的相对位置存储在我的数据库中,如下所示:Content\Courses\CourseOne\Unit_1\image\1.jpg并将其更改为杜松子酒中的实际位置:route := gin.Default()route.Static("/Content","./Media")一切正常,但我正在寻找一种在访问内容之前对用户进行身份验证的方法。通过上述方式,所有用户都可以通过更改所需模式的地址来访问任何数据。但是我希望如果用户在课程中注册,能够访问数据,否则,得到404错误。我该怎么做?编辑因为被要求解释身份验证的实现:我使用 JWT 进行身份验证。所以每个用户都有一个哈希ID。我有一个名为“用户课程”的表,用户信息将在购买课程后插入。这是我的课程路线:route.GET("api/v1/courses", handler.GetCourses)和我的处理程序:func GetCourses(context *gin.Context) { hashID, status, err := repository.GetToken(context) if err != nil { context.IndentedJSON(status, err) return } courses := make([]model.CourseAPI, 0) userInfo := model.Users{HashID: hashID} err = repository.DatabaseInstance.GetCourses(&courses, &userInfo) if err != nil { context.IndentedJSON(http.StatusServiceUnavailable, err) return } context.IndentedJSON(http.StatusOK, gin.H{"courses": courses})}JWT 令牌由客户端在标头中传递。所以我得到令牌并验证它。令牌包含用户哈希 ID,我在用户课程表中检查该哈希 ID。除了课程信息之外,还有一个名为 .如果 HashID 是为 UserCourses 表中的任何课程注册的,则成为该课程的变量, 否则。isRegisteredisRegisteredtruefalse
1 回答
米脂
TA贡献1836条经验 获得超3个赞
您可以创建组路由并通过它应用身份验证中间件
r = gin.Default()
// public routes
r.GET("public", publicHandler)
// routes group
auth = r.Group("/")
// authentication middleware within group
auth.Use(AuthMiddleware())
// route before which auth middleware will be run
auth.Static("/Content","./Media")
- 1 回答
- 0 关注
- 77 浏览
添加回答
举报
0/150
提交
取消