为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
largeQ 2022-09-26 17:46:09
我正在使用杜松子酒框架。我有一个包含一些课程信息的数据库。用户可以在课程中注册并访问内容。内容包括图像、视频和音频。我将这些内容的相对位置存储在我的数据库中,如下所示: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")


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信