我想使一些当前已认证的路由可以选择地进行认证。这样一来,我就可以按照以下方式在路由器上添加一个公共中间件:
.get('/projects/:id', public)
我当前的app.js流程如下:
// Authentication
app.use(authRoute);
app.use(defaultRouter);
// request handling
app.all('*', defaultRequestHandler);
因此,默认情况下,我的所有路由都经过身份验证,在authRoute中,我进行了护照身份验证,在其中将用户ID分配给请求。
使用上一个流程,我想到的唯一方法是,如果身份验证失败,则为authRoute中的请求分配一个匿名用户ID。还要在authRoute和路由器之间添加另一个中间层,该中间层从列表中检查请求url是否为公共路由。有没有更简单的方法?谢谢!
答案 0 :(得分:0)
我正在这样做:
您的结构类似于以下示例:
-controllers
-helpers
-public
-routes
--index.js
--api
--- index.js
--- subscriber.js
-views
在app.js中:
app.use('/', './routes/index');
在index.js文件中的目录路由中
const express = require('express');
const router = express.Router();
router.use(middleware(),require('./api');
router.use(require('./auth');
module.exports = router;
在index.js文件中的route / api目录中
const express = require('express')
const router = express.Router();
router.use('/subscriber', require('./subscriber'));
module.exports = router;
因此,目录API中的每个Route都使用auth中间件。 当您添加需要对身份验证进行控制的新路由时,可以在目录“ ./api/”中的index.js文件中添加新路由。 其他所有路径都在另一个文件夹中定义。