Tag: express jwt

使用express-jwt时,为什么我的授权标题在显式存在的时候丢失了

我正在使用express-jwt和jsonwebtoken。 当我尝试使用jsonwebtoken.verify(),我得到这个错误: Error: Invalid token: no header in signature 'Bearer eyJ0eXAiOi…reallylongtoken… … more … code: 'MISSING_HEADER' 我可以看到req.headers.authorization标记存在,因为我将其注销。 所以我不明白为什么标题丢失,如果它清楚地存在。 任何帮助赞赏。 这里的要点是: https://gist.github.com/ryanore/914362881d2d9f0878f2 这是req.headers.authorization的console.log输出 Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NDhhMGFkODcwZWZjZmMwM2EwMDAwMDEiLCJjcmVhdGVkQXQiOiIyMDE0LTEyLTExVDIxOjIxOjI4LjI0M1oiLCJmaXJzdE5hbWUiOiIiLCJsYXN0TmFtZSI6IiIsInVzZXJuYW1lIjoicnlhbm9yZSIsInBhc3N3b3JkIjoiJDJhJDEwJFM0YjcyVzIyQS9ubDJxZXV0WUxsUk9SNWhIblhvTGxkT09ud096OTFVNzBvSDVIQXRGZFhTIiwiZW1haWwiOiIiLCJfX3YiOjB9.fiHZ1J7cLXtgurTvqGVP2RcJqpju1zNmXBETWqYKXko

express-jwt通过路由处理特定的秘密密码

这是我的用例。 在使用express-jwt模块的快速应用程序中,我有两个主要路线。 我想确保我的路线与2个不同的密码。 app.use('/api/v1/admin', jwt({secret: "blabla1"}).unless({path:['/api/v1/admin/login']})); app.use('/api/v1', jwt({secret: "blabla2"}).unless({path: ['/api/v1/login']})); 在这种情况下,它不工作,因为我期待…是否有办法实现这一点,只有一个快速应用程序? 在此先感谢您的帮助家伙!

护照反序列化用户没有在帆中调用

我正在使用Sails版本0.11并尝试使用jwt身份validationconfiguration应用程序。 configuration/ passport.js var passport = require('passport'); var jwt = require('express-jwt'); module.exports = { http: { customMiddleware: function(app) { console.log('express midleware for passport'); app.use(jwt({ secret: sails.config.session.secret, credentialsRequired: false}).unless({path: ['/login']})); app.use(passport.initialize()); app.use(passport.session()); } } }; 服务/ passport.js /* other code */ passport.serializeUser(function(user, done) { console.log(user); done(null, user.id); }); passport.deserializeUser(function(id, done) { console.log(id); findById(id, function(err, user) { […]

快速更新智威汤逊作为回应

我正在使用JWT令牌来validation我的应用程序中的用户。 我发送我的令牌到后端req.headers.access_token检查我是否在数据库中find当前令牌,如果它仍然有效,如果是,我更新令牌(更新expires ),然后转到当前路由。 这部分工作就像它应该的。 我的问题是发回令牌到前端,以便客户端可以发送更新的令牌下一个请求,但我到目前为止所尝试的一切都没有正确更新头: res.header.access_token = token; res.setHeader('access_token', token); 没有工作。 我读的地方我还需要添加Access-Control-Expose-Headers所以我在快速安装中添加了以下内容: app.use(function (req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, Authorization, access_token'); res.setHeader('Access-Control-Expose-Headers', 'X-Requested-With,content-type, Authorization, access_token'); next(); }); 但同样的问题存在。 问题: 我怎样才能更新回应标题中的令牌? 人们通常如何处理多个请求(问题是,第二个请求将带有无效的令牌,因为我只是更新了旧的请求) 我为我的jwt使用jwt-simple lib

即使在授权中input令牌,JWT也会返回无效的签名错误

我已经看了这个堆栈溢出条目Node.js – Express.js JWT总是返回一个浏览器响应无效的令牌错误,但我找不到解决scheme。 我试图编写一个小节点应用程序,作为使用JWT访问令牌的概念validation。 我去了http://jwt.io/并试图跟随video教程。 我得到了一个令牌生成,但实际上使用令牌时,我得到一个“未经授权的错误:无效签名”的错误。 以下是我的源代码 const myUsername = 'ironflag'; const express = require('express'); const expressJWT = require('express-jwt'); const bodyParser = require('body-parser'); const jwt = require('jsonwebtoken'); const PORT = 2000; // App const app = express(); //fake data let killerBeez = { members: 9, location: 'staten island', stateOfBeing: 'wu-tang forever', memberList: [ { […]

在可组合中间件中处理Express-JWT错误

我正在为每个API实现JWT授权,如下所示: auth.js import expressJwt from 'express-jwt'; import compose from 'composable-middleware'; var validateJwt = expressJwt({ secret: config.secrets.session }); function isAuthenticated() { return compose() .use(function(req, res, next) { validateJwt(req, res, next); }) .use(function(req, res, next) { User.find({ where: { id: req.user.id } }).then(function(user){ //Handle User }).catch(function(err){ //Handle DB Error }); }); } index.js import auth from '../../auth'; […]

JWTauthentication使用$ http.get而不是使用$ http.post

我是新的MEAN堆栈。 我正在使用jwt来validationapi endpoint '/ api / candidates' 在客户端/angular度js服务我有以下条目 resumeFactory.get = function(candidateName) { return $http.get('/api/candidates', { headers: { Authorization: 'Bearer '+ authenticationService.getToken() }); }; 在服务器端我有: app.get('/api/candidates', auth, function (req, res) { if (!req.payload._id) { //user not logged in console.log(req); res.status(401).json({"message": "no user logged in from candidates"}); } else { Candidate.find({}, function (err, candidates) { if (err) […]

REST API不会根据标头中的Passport JWT令牌更改用户?

所以我有一个用Node.JS,MongoDB和Express编写的REST API。 我正在使用护照和passport-jwt使用JSON Web令牌进行身份validation,但是当我为不同的用户帐户使用不同的令牌时,请求每次都保存相同的用户。 这里是routes.js中的身份validation端点: // Authenticate the user and get a JSON Web Token to include in the header of future requests. apiRoutes.post('/authenticate', function(req, res) { User.findOne({ email: req.body.email }, function(err, user) { if (err) throw err; if (!user) { res.send({ success: false, message: 'Authentication failed. User not found.' }); } else { // […]

运行testing时如何优雅地跳过express-jwt中间件?

这是我创build的一个小型中间件,用于在我的nodejs应用程序testing期间跳过身份validation: authentication(auth) { if (process.env.NODE_ENV !== 'test') { return jwt({ secret: new Buffer(auth.secret, 'base64'), audience: auth.clientId }); } else { return (req, res, next) => { next(); }; } } 我对它的样子并不满意。 有没有更完美的方式来完成这个?

JWTauthentication是否安全?它如何保护CORS?

我已经在我的项目中实现了基于tokken的身份validation,而不是基于cookie会话的身份validation。 所以,在jwt(jason-web-tokkens)中,每次发送请求给服务器,我在头文件中附加tokken并把它发送给服务器,这个服务器在第一次生成tokkkne时使用的密钥被用来validation它,然后发送给我响应。 现在,我担心它,首先将tokken保存在浏览器的本地存储中。虽然tokken被哈希了,但是如果黑客把它从存储中取出并使用它呢? 谁能告诉我如何阻止CORS攻击? 我很困惑,在网上找不到任何可靠的答案。