我正在处理一个快速应用程序,我有两个GET URL。一种是获取数据库中的所有资源,但是受到权限保护(需要身份验证和管理员访问),而另一种则基于搜索参数(查询字符串)来获取资源。
需要身份验证的路由如下所示:
carRouter.get('/car', verifyToken, isAdmin, fetchAllCarAds);
这意味着必须先登录管理员,然后在授予访问权限之前先进行检查以确定他是否真正是管理员。现在我有了另一个不需要身份验证的GET路由 :
carRouter.get('/car?status=unsold', filterUnsoldCars);
。
我了解express不允许基于查询字符串的路由,那么如何确保不需要身份验证(查询字符串)的请求可以在没有查询字符串的情况下访问?
答案 0 :(得分:1)
您可以执行以下操作使其正常工作。
isAdmin
中间件中答案 1 :(得分:0)
我通过将其放置在verifyToken函数之前对其进行了修复,并且可以正常工作。如果有的话,我想学习其他方法。谢谢
carRouter.get('/car', filterUnsoldCars, verifyToken, isAdminDummy, fetchAllCarAds);
答案 2 :(得分:0)
我不认为您正在构建适当的路由,但是,您可以使用中间件来检查查询参数并绕过分配给下一个路由。检查以下 next('route')
的路由说明carRouter.get('/car', hasParams, verifyToken, isAdminDummy, fetchAllCarAds);
carRouter.get('/car?status=unsold', filterUnsoldCars);
如果hasParams为true,则next('route')
如果hasParams为false,则next()