问题标签 [negroni]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 如何使用 gin 构建带有标签的 golang 应用程序?
我的 golang 应用程序的一个关键组件使用移植的GraphicsMagick 库,该库需要使用-tags gm.
例如:
go build -tags gm
但是,我正在基于negroni 框架构建 Web 服务并使用gin运行它,这允许我使用命令运行应用程序gin。我找不到任何将构建标签传递给杜松子酒的方法。有什么建议么?
go - Golang 中间件认证取决于路由
我正在用 Go 构建一个 API。我通过在标头中包含一个秘密令牌来处理所有身份验证。我添加了一些使用 negroni 的中间件,这些中间件从标头中挑选出来并检查数据库以查看它是否存在。
这很好,但现在我想根据相关路线进行许可。我在数据库中有一个表,仅对某些路由等具有权限,我想在中间件中使用此逻辑,以便处理程序永远不必担心它。
我的问题是中间件需要知道正在调用什么处理程序,以便它可以检查数据库中的正确记录。使用 negroni 传递或提取当前路由/处理程序的最佳方法是什么?
谢谢
go - Negroni:将上下文从中间件传递给处理程序
我正在尝试将 Gorilla 会话添加到Negroni中间件处理程序的请求上下文中,以便我可以在我的 Gorilla Mux 处理程序中访问它。这是我的代码的精简版本:
希望这是有道理的。谁能指出我做错了什么?
go - negroni 中间件中设置的请求上下文在嵌套的 gorilla Subrouter 中丢失
我的基本main设置:
在里面apiRouter.Middleware我设置了以下上下文:
但是,在某些 handlerFunc 内v1Router.Router尝试获取Get上下文的值时,结果为 nil:
印刷:DomainName <nil>
我知道该Set方法是正确的,因为在将其设置后立即获取该值apiRouter.Middleware将返回正确的字符串值。
go - 我可以将我的函数用作“negroni”中间件吗
我有一个函数用作每个 GET 请求的包装器:
路由器:
例子:
现在我需要将每个请求包装在路由器中:controllers.WrapHandler(controllers.GetUnreadRssFeeds). 我正在寻找避免它的方法。
我可以将其转换WrapHandler为将其用作negroni中间件吗?有没有办法在negroni中间件函数之间传递数据?
go - 在 HTTP 处理程序中提供子目录 [GoLang]
我有以下代码:
/api应该是安全的。如果用户点击/,我希望他们查看目录index.html中的。PROJECTDIR/frontend
前端目录看起来像
index.html 从 加载所有内容/static。无论我如何配置它,当我访问时localhost:3000,我都可以得到index.html但下面的所有内容/static都是 404 的。
我如何错误地配置它?
go - 使用 Gorilla MUX 和 Negroni 子路由中间件
我试图仅在某些路由上添加中间件。我写了这段代码:
}
我希望仅看到带有前缀 /admin 的路径的请求日志。我在执行“GET /admin”时确实看到了一条日志行,但在执行“GET /admin/articles/new”时却没有。我通过蛮力尝试了其他组合,但我无法得到它。我的代码有什么问题?
我看到了其他方法,比如在每个路由定义上包装 HandlerFunc,但我想为前缀或子路由器做一次。
我在那里使用的日志记录中间件用于测试,也许 Auth 中间件更有意义,但我只是想让它工作。
谢谢!
go - axios 不发送 POST 到 golang api
我有一个带有 negroni 中间件的 golang api 后端。
我已经为 negroni 实现了 CORS 处理程序,所以我的 api 应该允许跨源资源共享。
这来自https://github.com/rs/cors/blob/master/examples/negroni/server.go使用 negroni 实现 CORS 的示例。
尽管如此,我的 api 现在将 200 状态响应回我的前端,但前端不会将 POST 请求发送到服务器。这是我的 axios 代码:
go - 请求完成后,Negroni 继续调用其他处理程序
我在 Go 中的 Web 应用程序(使用 Gorillamux和negroni)有大约 20 个处理程序,根据应该应用的中间件函数分为三组。具体来说:
第 1 组:静态请求(根本没有中间件)
/li>第 2 组:应该只有 CORS 中间件,没有身份验证的请求:
/li>第 3 组:应同时应用 CORS 和身份验证中间件的请求:
/li>
这是我设置 HTTP 服务器的代码:
根据Negroni 文档中的“路由特定中间件”部分,我认为这是正确的,其中说:
如果您有一组需要执行特定中间件的路由,您可以简单地创建一个新的 Negroni 实例并将其用作您的路由处理程序。
但是,当我发出请求并使用调试器时,我看到它(*Negroni).ServeHTTP被多次调用。例如,如果我请求,GET /favicon.ico则该staticHandler函数被正确调用并调用WriteHeader(200),但之后它会调用下一个调用,mux.Router该调用WriteHeader(404)会在终端中打印出警告,因为标头被写入了两次(http: multiple response.WriteHeader calls)
如果它用于不存在的路由,NotFoundHandler则调用 Gorilla 默认值 3 次(每次调用一次mux.Router)。
请求完成后,如何让 Negroni 停止调用其他处理程序?
...如果我的 Negroni 实例配置错误,为什么它不在初始化期间执行检查以警告我配置无效?
我的理解是,negroni.UseandUseFunc用于设置中间件(每个请求都会调用它们),而UseHandler用于设置终端处理程序(每个请求只调用 1 个,或回退到 404)。如果我正确理解了这种情况,那么出于某种原因,它将我的终端处理程序视为中间件。
authentication - 仅针对 OPTIONS 请求调用 Negroni CORS 中间件
我正在 Golang 中构建一个 Web 应用程序,使用 mux 作为路由器,使用 Negroni 管理 API 的中间件。
我有以下中间件:
- 身份验证中间件检查客户端是否具有有效会话,如果没有则返回 401
- 允许基于https://github.com/rs/cors/的编辑版本的 CORS 请求的中间件
我想酌情将中间件应用于特定的路由,即在所有请求上使用 CORS 中间件并仅在受保护的路由上检查身份验证。
当我尝试使用前端发出 API 请求时,实际发生的情况是,CORS 中间件似乎只在每个 API 路由的初始 OPTIONS 请求中被调用,并且随后没有被使用。
例如:
- UI 使用包含凭据的 JSON 对象对 /api/login 进行 POST
- 在浏览器控制台中,我们看到初始 preflight OPTIONS 请求获得了 200 OK,其中我们使用 corsMiddleware 中的 handlePreflight 设置了所有标头,到目前为止一切顺利。
- 然后后续的 POST 请求都没有命中 corsMiddleware。我们知道中间件永远不会被调用,因为我们从未在服务器日志中看到它被调用过。我们在 Chrome 中收到错误“请求的资源上不存在‘Access-Control-Allow-Origin’标头”。
- 奇怪的是实际上调用了函数 handleLogin,我们可以看到正确的凭据,并且服务器似乎正确地为它们存储了会话。
我们还在其他一些路由上看到了奇怪的东西——即当向 /api/entities 发出 Postman GET 请求时,我们能够在未登录时获取实体列表(应该受到保护)。就好像身份验证中间件一样没有被调用或行为不符合预期。
我对其中一些概念相当陌生,所以也许我误解了一些东西。任何帮助,将不胜感激。
我的代码如下(main.go):
corsMiddleware 的代码如下:
