如何在Go中从公共文件夹发回图像?

我是新手,如果这是一个明显的问题,那么抱歉,但我没有找到任何东西,所以我在这里发帖。


这实际上是一个由两部分组成的问题。


1)所以我的项目目录中有这个Web文件夹。它是公共的,我有一个中间件功能来检查 JWT。


我正在使用此逻辑来避免 JWT 身份验证,但它现在可以正常工作。我明白了unauthorized。


// List of endpoints that don't require auth by an access token

        notAuth := []string{"/", "/refreshtokens", "/students/signup", "/students/signin", "/students/forgotpassword",

            "/images"}


        // Current request path

        requestPath := r.URL.Path


        // Check if the request does not need authentication, serve the request if it doesn't need it

        for _, value := range notAuth {


            if value == requestPath {

                next.ServeHTTP(w, r)

                return

            }

        }

那么我怎样才能把这个URL放入数组中,这样它就可以逃脱JWT授权呢?


2)这就是我公开文件夹的方式,但我不想要这样。


router.PathPrefix("/images").Handler(http.StripPrefix("/images", http.FileServer(http.Dir("./web/"))))

我想要的是类似的东西


router.Handle("/image/{imageName}",func(w http.ResponseWriter, request *http.Request){

http.ServeFile(this image name file)

})

这样我就可以发回所请求的文件。


任何帮助将不胜感激。


红糖糍粑
浏览 108回答 1
1回答

白衣非少年

对于#1:显然请求路径不是notAuth. notAuth也许您需要检查路径是否具有包含在?中的前缀。如果是这样,你需要小心/,因为它会通过所有路径。如果没有,记录请求路径并查看问题所在。对于#2:你应该能够做到:http.ServeFile(w,request,filepath.Join(baseDir,mux.Vars(request)["imageName"])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go