【发布时间】:2017-09-07 09:33:37
【问题描述】:
我想根据请求标头禁用一个或多个“部分”中间件(全局注册或在路由上注册)。
我正在使用 Postman 测试我的 API,但遇到了 CSRF 保护以及身份验证等问题。
所以理想情况下(可能在服务提供商中?)我会检查请求中是否设置了邮递员令牌以及环境等,然后禁用某些中间件运行。
以前有没有人做过这样的事情,可以做到吗?
谢谢!
【问题讨论】:
-
只需注释掉测试时不需要的中间件。我不认为这样做所需的时间和精力是值得的,因为它只是为了调试。 (如果使用邮递员,您需要修改每个单独的中间件或添加一个“修复”请求的中间件。太麻烦了imo)
-
同意它最初可能很耗时,理想情况下我会把它变成一个小包,我可以添加到一些基于 API 的项目中,它允许同事测试共享的 Postman 集合,而无需调整代码库,而不是意外提交中间件的注释(不太可能,但你永远不知道!)。
-
据我所知,这没有什么灵丹妙药,您可以为邮递员请求创建一个新的中间件组,并更改您的
RouteServiceProvider::map()函数以将 Web 路由注册到该组(如果标头是设置,但这不会影响单个路由上的中间件,这些中间件是在内核中静态声明的,因此您不能轻松地将它们换出,您可能需要为它们制定不同的解决方案。 -
好吧,是的,我想它可能不是很干净 :( 不过感谢您的意见,让我有一些东西可以看。这也让我意识到我对 Laravel 的一些核心启动知之甚少同时浏览所有启动过程等。再次感谢。