使用带有护照和快递的可选授权路线

时间:2019-08-13 07:32:26

标签: express jwt authorization passport.js

我想使一些当前已认证的路由可以选择地进行认证。这样一来,我就可以按照以下方式在路由器上添加一个公共中间件:

.get('/projects/:id', public)

我当前的app.js流程如下:

// Authentication
app.use(authRoute);

app.use(defaultRouter);

// request handling
app.all('*', defaultRequestHandler);

因此,默认情况下,我的所有路由都经过身份验证,在authRoute中,我进行了护照身份验证,在其中将用户ID分配给请求。

使用上一个流程,我想到的唯一方法是,如果身份验证失败,则为authRoute中的请求分配一个匿名用户ID。还要在authRoute和路由器之间添加另一个中间层,该中间层从列表中检查请求url是否为公共路由。有没有更简单的方法?谢谢!

1 个答案:

答案 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文件中添加新路由。 其他所有路径都在另一个文件夹中定义。