我正在努力解决如何为当前用户获取用户解密数据的问题,基本上每次用户登录时他都会获得一个令牌。
登录后,我可以拍摄照片并将其发送到服务器,按照我的代码,您可以看到此请求需要令牌才能工作。
基本上我有一个与我的app.js(起始文件)相关的问题我尝试设置一个app.use,它需要一个令牌,用于注册和登录后的所有路由,如下所示:
app.use('/',require('./routes/index'));
app.use(jwtPermission);
router.use('/fotos',fotos);
我的jwt权限文件:
var jwt = require('jsonwebtoken');
var jwtConfig = require('../config/jwt');
module.exports = function(req, res, next) {
console.log("entered");
// check header or url parameters or post parameters for token
var token = req.body.token || req.query.token || req.headers['x-access-token'];
console.log(req.headers['x-access-token']);
// decode token
if (token) {
// verifies secret and checks exp
jwt.verify(token,jwtConfig.secret, function (err, decoded) {
if (err) {
return res.json({ success: false, message: 'Failed to authenticate token.' });
} else {
// if everything is good, save to request for use in other routes
req.decoded = decoded;
next();
}
});
} else {
// if there is no token
// return an error
return res.status(403).send({
success: false,
message: 'No token provided.'
});
}
}
路由器索引(与身份验证和fotos文件的连接)
var express = require('express');
var router = express.Router();
router.use(function timeLog(req, res, next) {
console.log('Time: ', Date());
console.log('Request Type:', req.method);
console.log('Request URL:', req.originalUrl);
next(); //passa a solicitação para a próxima função de middleware na pilha
});
router.use('/',require('./authentication'))
router.use('/fotos',require('./fotos'));
router.use(function(req,res,next){
return res.status(404).json({Error:"Invalid Url"});
})
module.exports = router;
当我指向/ fotos时它没有像我想要的那样进入jwtPermission,出了什么问题?
答案 0 :(得分:0)
您可以在处理某些路线的功能之前添加令牌验证中间件。例如:
router.use('/fotos', jwtAuthentication, require('./fotos'));