使用带护照和快递的可选授权路线
Posted
技术标签:
【中文标题】使用带护照和快递的可选授权路线【英文标题】:Using optionally authorized routes with passport and express 【发布时间】:2019-12-19 17:40:03 【问题描述】:我想让一些当前经过身份验证的路由可选地进行身份验证。因此,在我的路由上,我可以通过以下方式简单地将公共中间件添加到我的路由器:
.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】:我是这样做的:
您的结构如下所示:
-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 文件中的目录 routes/api 中
const express = require('express')
const router = express.Router();
router.use('/subscriber', require('./subscriber'));
module.exports = router;
因此,目录 API 中的每个 Route 都在使用 auth 中间件。 当您添加需要控制身份验证的新路由时,您可以在目录“./api/”的 index.js 文件中添加新路由 其他所有路由都在另一个文件夹中定义。
【讨论】:
以上是关于使用带护照和快递的可选授权路线的主要内容,如果未能解决你的问题,请参考以下文章