显示基于用户在戈朗杜松子酒中的静态图像

我正在使用杜松子酒框架。我有一个包含一些课程信息的数据库。用户可以在课程中注册并访问内容。内容包括图像、视频和音频。我将这些内容的相对位置存储在我的数据库中,如下所示:


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


largeQ
浏览 78回答 1
1回答

米脂

您可以创建组路由并通过它应用身份验证中间件r = gin.Default()// public routesr.GET("public", publicHandler)// routes groupauth = r.Group("/")// authentication middleware within groupauth.Use(AuthMiddleware())// route before which auth middleware will be runauth.Static("/Content","./Media")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go