我正在使用Slim重新实现我的用户管理系统,并且我试图找出哪里我应该进行用户数据清理/验证。我一直在阅读有关中间件的内容,我想知道这是否是实现数据验证的合适方式。
我的验证计划是为包含一些用户数据(即表单)的每个请求使用验证模式(一个简单的JSON文件)。但是,不同的表单显然会使用不同的模式,并且可能只有模式无法处理某些类型的验证。
因此,我实现的任何中间件都必须根据路由决定使用哪个架构。此外,某些路由将需要除模式中表示的其他验证逻辑。这对我来说听起来像是错误的方法 - 不是中间件应该是公平的"泛型",在每个请求/响应上执行相同的逻辑?
另一种方法是使用某种验证对象,我使用适当的模式在每个路由中初始化,然后注入我的Slim应用程序。
哪种方法更明智?
答案 0 :(得分:1)
在最终将每个端点的参数列表连接在一起时,使用全局中间件并没有意义。
我会考虑的两个选项是:
实现为 route 中间件,以便您可以为每个端点进行不同的过滤/验证。
e.g。
function fooFilter() {
// filter/validate GET variables here and set back into request.
}
$app->get('/foo', 'fooFilter', function () {
// "controller" logic
});
这样做的好处是你的控制器逻辑不需要用已经完成的验证工具来搞清楚。
在控制器逻辑中过滤/验证。这里的主要优点是,您可以更轻松地审核是否正在使用GET变量而不先进行过滤/验证。