为ExpressJS app.use()添加例外

时间:2016-08-12 09:10:51

标签: javascript node.js express routing server

我正在研究NodeJS项目,并使用Express作为我的路由框架。

我的网站上有一个注册表单和一个登录表单,两者都分别向/users/register/login发送请求。但是,我希望能够将/users/:userID作为路由来查看不同用户的配置文件,但当然,此路由意味着我为每个登录用户都有一个session_id。

我的问题是,我如何使用app.use('/users', checkForSessionId),而无需将其用于注册和登录?

1 个答案:

答案 0 :(得分:1)

这是您需要使用中间件的地方

app.js

var users = require('./routes/user');
app.use('/users', users);

./路由/ user.js的

var express = require('express');
var router = express.Router();
function checkForSessionId(req, res, next){
    //if no valid session
    //    return res.status(401).json("not authorised");
    //else
    next();
}

router.get('/:userId', checkForSessionId, function(req, res){
    //this is a route which requires authentication
})

router.post('/register', function(req, res){
    //authentication is not necessary
})

module.exports = router;