[gogf/gf]g.Server 静态文件服务器,是否支持拦截器

2024-07-09 373 views
9

现在想在静态文件加鉴权,现在试了一下,Middleware不对静态文件生效 。

回答

7

大量 ServeFile 是否会影响性能?

    s := g.Server()

    s.BindMiddleware("/:file", func(c *ghttp.Request) {
        auth := Auth{
        }

        if code, err := auth.AuthCheck(); code != 200 {
            c.Response.WriteStatusExit(code, err)
        } else {
            c.Response.ServeFile(auth.fileName)
        }
    })

    s.SetPort(8199)
    s.Run()
9

你这个 "/:file" 可以支持吗? 我测试是不支持的啊!!

6

@botsphp 中间件不支持静态请求,HOOK支持。你的代码那样自己通过路由来维护也可以。

5

我发的代码就是可以跑的哦。

7

我想了解一下 ServeFile 在性能上有没有需要注意的地方。

3

ServeFile其实底层是调用的标准库net/httpServeContent方法,具体可以看下源码。性能上标准库还是能保证的。