如何在我的节点+ express应用程序中设置路由以传递身份验证方法?

时间:2016-07-15 13:58:26

标签: javascript node.js express

我正在关注auth0后端设置教程,我想知道如何在单独的文件中而不是app.js中设置路由。

在教程中,他们创建了

var authenticate = jwt({
  secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
  audience: process.env.AUTH0_CLIENT_ID
});

然后app.use('/secured', authenticate);

如果我想在某些路径文件夹routes/index.js中设置我的路线,并且我想使用此authenticate(),我该如何在app.js中设置?

我知道我必须做var routes = require('./routes/index.js');之类的事情,但在这种情况下如何设置app.use( .. )以便它使用authenticate()

由于

2 个答案:

答案 0 :(得分:3)

您可以在routes中定义./routes/index.js模块,如下所示:

// ./routes/index.js

module.exports = function (app) {
   app.get('/secured', getSecuredController);
};

function getSecuredController (req, res) {
   res.send('/secured OK');
}

在您的主app.js文件中:

// ./app.js

var initializeRoutes = require('./routes');
var authenticate = jwt({..});

app.use('/secured', authenticate);
initializeRoutes(app);

答案 1 :(得分:1)

您可以从文件routes / index.js返回路由器:

// routes/index.js

const express = require('express');

module.exports = function(options) {
    const router = express.Router();

    router.get('/', (req, res, next) => {
        // process route...
    });

    // define other routes...

    return router;
};

并在服务器中使用它:

// server.js

const express = require('express');
const router = require('./routes/index.js');

const authenticate = jwt({
  secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
  audience: process.env.AUTH0_CLIENT_ID
});

var app = express()

app.use('/secured', authenticate, router());

这将使您的路由器可配置并可重复使用。