如何在 api 模式下使用 rails 5 创建自定义中间件?

How to create a custom middleware while using rails 5 in api-mode?

我正在尝试在 rails 5 中以 api 模式创建自定义中间件,其中仅适用于不以 /api/... 开头的路由将在

中重新添加
middleware.use ActionDispatch::Cookies
middleware.use ActionDispatch::Cookies::Session

这个 post 展示了如何在 rails 4 中做到这一点: OmniAuth::NoSessionError - You must provide a session to use OmniAuth. (configured in devise)

我正在尝试创建一个中间件,就像上面 post 中接受的答案一样,但是当添加

config.middleware.insert_before ActionDispatch::ParamsParser, "SelectiveStack"

到application.rb它抛出一个错误说它找不到 SelectiveStack。

它也不会让我在 application.rb 中添加要求或包含来访问它,所以我想知道是否有人遇到过这个或有任何想法?

我可能只是格式错误或路径错误。

事实证明,ActionDispatch::ParamsParser 来自其他 Whosebug post 中间件实际上并不存在,错误的措辞有点混乱。

所以基本上要使其正常工作,您可以将中间件放在实际存在的中间件之前,或者只使用

config.middleware.use 

而不是

config.middleware.insert_before