【发布时间】:2019-03-31 07:59:01
【问题描述】:
作为学习 NodeJS 的练习,我正在使用 ExpressJS 构建一种 API,用于响应 Web 请求。截至目前,程序中有三个路由,“/login”、“/register”和“/changePassword”。所有这些方法都不需要处理任何类型的令牌。
但是,我计划添加到程序中的所有其他路由(例如,'/post' 路由)都需要用户使用从 POST 请求中获得的令牌验证自己,以使用正确的 '/login'证书。
为了验证Token,我写了一个中间件函数:
module.exports.validateToken = function (req,res,next) {
const token = req.headers['x-access-token']
console.log(`validateToken() - TOKEN: ${token}`)
if (token) {
//Make sure the token is valid[...]
next()
}else {
return res.status(401).send({
message: 'Missing token',
success: false
})
}
}
我的问题是,如何将此中间件仅应用于需要身份验证的路由? 我想过只创建另一个 Router 对象,然后像这样调用它:
const tokenValidator = require('./util').validate.validateToken
// Router used for any actions that require user-authentication
const authRouter = new app.Router()
authRouter.use(tokenValidator)
但这会不会影响我原来的免验证路由?
// Initiate the routes that don't need auth
const routes = require('./routes')(app)
在此先感谢,我更像是一名 Java 开发人员,所以很多 Javascript 怪癖让我很困惑。
【问题讨论】:
标签: javascript node.js express