【问题标题】: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 是否是公共路由。有没有更简单的方法?谢谢!

【问题讨论】:

    标签: express jwt authorization passport.js


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-08
      • 2019-08-07
      • 1970-01-01
      • 2018-11-03
      • 2017-08-03
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多