Javascript nodejsjwt令牌验证

Javascript nodejsjwt令牌验证,javascript,node.js,auth0,Javascript,Node.js,Auth0,我正在尝试验证已签名的令牌,并使用NodeJS从中提取信息 我现在在浏览器中有一个名为userToken的令牌,它是在我登录后保存的(顺便说一下,我使用auth0登录) 我试图在这里手动验证我的令牌:,它可以正常工作,并毫无问题地为我提供有效负载数据。然而,我不能对NodeJS做同样的事情。我怎么做 我看了文件,但没看懂。 这是我的server.js var http = require('http'); var express = require('express'); var cors =

我正在尝试验证已签名的令牌,并使用NodeJS从中提取信息

我现在在浏览器中有一个名为userToken的令牌,它是在我登录后保存的(顺便说一下,我使用auth0登录)

我试图在这里手动验证我的令牌:,它可以正常工作,并毫无问题地为我提供有效负载数据。然而,我不能对NodeJS做同样的事情。我怎么做

我看了文件,但没看懂。

这是我的server.js

var http = require('http');
var express = require('express');
var cors = require('cors');
var app = express();
var jwt = require('express-jwt');
var dotenv = require('dotenv');

dotenv.load();

var authenticate = jwt({
    secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
    audience: process.env.AUTH0_CLIENT_ID
});


// view engine setup
var path = require('path');
app.set('views', path.join(__dirname, 'views'));
app.use(express.static(path.join(__dirname, 'public')));

app.set('view engine', 'jade');


app.configure(function () {

    // Request body parsing middleware should be above methodOverride
    app.use(express.bodyParser());
    app.use(express.urlencoded());
    app.use(express.json());
    app.use(cors());

    app.use(app.router);
});


app.get('/', function (req, res) {
    res.render('index');
});

app.get('/test', function(req,res) {
    // how do I check it?
});


var port = process.env.PORT || 3001;

http.createServer(app).listen(port, function (err) {
    console.log('listening in http://localhost:' + port);
});

这个示例应该对您有所帮助,它没有经过测试,但请确保它是正确的,请查看
expressjwt
的源代码,确实如此


问题是您必须自己对数据进行编码,然后解码,因此请注意auth0会为您返回有效的数据结构(否则我不确定)

您不需要实现任何功能。由于您正在使用此
express jwt
,只需将
userProperty
标记传递给
jwt

var authenticate = jwt({
    secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
    audience: process.env.AUTH0_CLIENT_ID,
    userProperty: 'payload'
});
因此,您可以使用控制器中的
req.payload
获取所有jwt有效负载数据。您可以使用
console.log(req.payload)
检查它

您可以在此处看到它的工作原理:


我希望它能帮上忙,我的英语也很抱歉。

Node告诉你,
jwt
没有
verify
功能,事实上它看起来没有。我正在努力弄清楚express jwt和jsonwebtokens之间有什么联系。是的,
jsonwebtoken
express jwt
创建(或签名)令牌。谢谢,差不多完成了。如果我将令牌作为字符串传递,它将工作。但如果我尝试req、headers.userToken或req.body.userToken,它将返回无效的令牌,因为它可能在其中找不到令牌。是什么原因造成的?我如何找到要调用哪个req对象(标头、正文等)来获取userToken?我的令牌位于localstorage中,我应该安装一个模块来获取它,还是有一种内置的方法来获取它?@salep Browser必须发送带有标头(或正文)的令牌,为此,从localstorage获取令牌,并用该令牌修补所有传出的http请求(添加到标题),这就是itI成功实现的,它适用于jQuery Ajax post请求,但get请求仍然存在问题。感谢您的帮助,我非常感激。什么是userProperty?这应该是最好的答案。
var authenticate = jwt({
    secret: new Buffer(process.env.AUTH0_CLIENT_SECRET, 'base64'),
    audience: process.env.AUTH0_CLIENT_ID,
    userProperty: 'payload'
});