【问题标题】:show static image based on users in golang gin在 golang gin 中显示基于用户的静态图像
【发布时间】:2021-09-09 21:53:43
【问题描述】:

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

Content\Courses\CourseOne\Unit_1\image\1.jpg

并将其更改为 gin 中的实际位置:

route := gin.Default()
route.Static("/Content","./Media")

一切正常,但我正在寻找一种在访问内容之前对用户进行身份验证的方法。通过上述方式,所有用户都可以通过更改所需模式的地址来访问任何数据。但我希望如果用户在课程中注册,能够访问数据,否则会出现 404 错误。 我该怎么做?

编辑

既然被要求解释认证的实现:

我使用 JWT 进行身份验证。所以每个用户都有一个HashID。 我有一个名为 UserCourses 的表,用户信息将在购买课程后插入。

这是我的课程路线:

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 令牌由客户端在标头中传递。所以我得到令牌并验证它。该令牌包含用户 HashID,我在 UserCourses 表中检查该 HashID。除了课程信息,还有一个名为isRegistered的变量。如果在UserCourses表中为任何课程注册了HashID,则isRegistered成为该课程的true,否则为false

【问题讨论】:

  • 您希望用户登录并注册给定课程。您需要身份验证和授权。这是一个比一个答案所能回答的复杂得多的话题。我建议你做一些研究。
  • @Marc 感谢您的回复。其他部分,如身份验证,......已实施。我的问题只是处理图像。有没有为静态路由创建处理程序?在这种情况下,我可以根据用户身份验证处理内容。
  • 您是如何为其他部分实现身份验证的……比如说页面?你能分享那个代码吗?
  • 我编辑了我的问题并添加了一些关于身份验证实现的解释。 @车坦
  • 目前任何人都可以访问任何内容。因为路由器,我的意思是route.Static("/Content","./Media") 只是将相对地址更改为绝对地址。我只想让经过身份验证的用户能够访问内容。如问题中所述,身份验证基于 jwt 令牌。@blackgreen

标签: go routes go-gin


【解决方案1】:

您可以通过它创建组路由并应用身份验证中间件

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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2017-03-05
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多