gpt4 book ai didi

javascript - Node.js - Express.js JWT 总是在浏览器响应中返回一个无效的 token 错误

转载 作者:IT老高 更新时间:2023-10-28 23:10:03 26 4
gpt4 key购买 nike

我将 node.js 和 express.js 与 express-jwt 一起使用模块,我已经建立了一个简单的 HTTP 服务器来测试一切:

这是涉及的 Node 代码:

 app.set('port', process.env.PORT || 3000);
app.use(express.methodOverride());
app.use(allow_cross_domain);
app.use('/api', expressJwt({secret: '09qrjjwef923jnrge$5ndjwk'}));
app.use(express.json());
app.use(express.urlencoded());
app.use('/', express.static(__dirname + '/'));
app.use(function(err, req, res, next){
if (err.constructor.name === 'UnauthorizedError') {
res.send(401, 'Unauthorized');
}
});

app.get('login',function(req,res){

//...
jwt.sign(results.username+results.email, secret, { expiresInMinutes: 9000000000*9393939393393939393939 });
});

app.post('api/profile',function(req,res){
console.log(req.user); // this return undefined in console
res.send(req.user); // response is pending and dunno why it returns error in browser console
});

因此,一旦我打开 /login URL,我就会登录并将 session token 发送到 api/post,它会在浏览器控制台中返回此响应错误:

{"error":{"message":"invalid signature","code":"invalid_token","status":401,"inner":{}}}

我不明白为什么会这样,因为前端存储的 token 和JWT中的 token 是一样的。出现此错误的原因可能是什么?

POSTapi/post URL 的 header 示例:

enter image description here

最佳答案

这是一个例子

http://blog.auth0.com/2014/01/07/angularjs-authentication-with-cookies-vs-token/

var expressJwt = require('express-jwt');
var jwt = require('jsonwebtoken');

var SECRET = 'shhhhhhared-secret';

app.use('/api', expressJwt({secret: SECRET}));

app.post('/authenticate', function (req, res) {
//TODO validate req.body.username and req.body.password
//if is invalid, return 401
if (!(req.body.username === 'john.doe' && req.body.password === 'foobar')) {
res.send(401, 'Wrong user or password');
return;
}

var profile = {
first_name: 'John',
last_name: 'Doe',
email: 'john@doe.com',
id: 123
};

// We are sending the profile inside the token
var token = jwt.sign(profile, SECRET, { expiresIn: 18000 }); // 60*5 minutes

res.json({ token: token });
});

app.get('/api/protected',
function(req, res) {
res.json(req.user);
});

关于javascript - Node.js - Express.js JWT 总是在浏览器响应中返回一个无效的 token 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21883521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com