小编Roc*_*CTZ的帖子

验证Auth0 JWT会引发无效的算法

我创建了一个Auth0客户端,我正在登录并收到此令牌:

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik1rVkdOa1l5T1VaQ1JqTkRSVE5EUmtNeU5rVkROMEUyUTBVMFJrVXdPVEZEUkVVNU5UQXpOZyJ9.eyJpc3MiOiJodHRwczovL3RvdGFsY29tbW56LmF1LmF1dGgwLmNvbS8iLCJzdWIiOiJnb29nbGUtb2F1dGgyfDEwMzI5NzA4OTYyMTk5NjUwMjY2MiIsImF1ZCI6ImxTWUtXMUZZdENkMWJLQmdXRWN0MWpCbmtDU3R2dW5SIiwiaWF0IjoxNTA5ODYyMTI1LCJleHAiOjE1MTAyMjIxMjV9.kjmckPxLJ4H9R11XiBBxSNZEvQFVEIgAY_jj2LBy4sEJozBB8ujGE7sq9vEIjMms-Lv2q9WzFQPrqcxyBcYC4Je4QojMgvqLDCodtpot0QUle8QfGmonc1vZYIZyX-wqyOXtRqhoZVEKTeLhm9Le2CV4_a3BwgjkE1LjcDx01GZfsnaId8mh10kGk-DBmr5aVc8MxglLCq5Uk8Zbl2vDc__UMDgx1eQPQg-zve4fUf8zHcxizypYTnF_v0dEAT00L2j5J41SFYdWvP6ReQ3vhVYew2o9iM6u1s75HE-xW8s4pzV4BZAQtgfgIeCd6aVGZs76bcnQXBLej1B7zaPBvA
Run Code Online (Sandbox Code Playgroud)

我现在要做的是使用jsonwebtoken验证令牌.令牌使用RS256算法进行签名.

我将签名证书下载为a .pem并且我成功使用它来验证令牌,如下所示:

var cert = fs.readFileSync('certificate.pem');
jwt.verify(token, cert, {algorithm: 'RS256'}, (err, decoded) => {
  console.log(err)
  console.log(decoded)
});
Run Code Online (Sandbox Code Playgroud)

我想要做的是它不起作用是使用秘密验证令牌(在Auth0客户端设置中称为客户端密钥,并且是一个字符串).

jwt.verify(token, MYSECRET, {algorithm: 'RS256'}, (err, decoded) => {
  console.log(err)
  console.log(decoded)
});
Run Code Online (Sandbox Code Playgroud)

此代码始终抛出错误:

{ JsonWebTokenError: invalid algorithm
    at Object.module.exports [as verify] (C:\code\aws\learn-authorizer\node_modules\jsonwebtoken\verify.js:90:17)
    at Object.<anonymous> (C:\code\aws\learn-authorizer\testme.js:25:5)
    at Module._compile (module.js:624:30)
    at Object.Module._extensions..js (module.js:635:10)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Function.Module.runMain (module.js:665:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3 name: 'JsonWebTokenError', message: …
Run Code Online (Sandbox Code Playgroud)

oauth node.js jwt auth0

7
推荐指数
2
解决办法
5194
查看次数

如何在Highmaps中缩放到特定点

Highmaps/highcharts是一个javascript/jquery适配器,可以在浏览器中呈现地图等.

我有一个突出显示单个国家/地区的地图,但是,(世界)地图的比例是这样的,我想在地图加载到相关国家后放大.

看看API我觉得这是可能的.

有一个事件监听器,这样我就可以在加载时执行自定义函数.如此示例所示,在负载上添加一个系列(Js小提琴)

此外,还有一种方法mapZoom允许您使用以下参数指定要缩放的点:

mapZoom(数字howMuch,[Number centerX],[Number centerY],[Number mouseX],[Number mouseY])

但是当我尝试调用这个方法onload(我的代码尝试如下,JS 在这里捏)时,没有任何反应.

$(function () {

    $.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=world-population-density.json&callback=?', function (data) {

        // Assign id's
        $.each(data, function () {
            this.id = this.code;
        });

        // Initiate the chart
        $('#container').highcharts('Map', {
            chart: {
                events: {
                    load: function () {
                    mapZoom(0.5, 100, 100);
                    }
                }
            },
            title: {
                text: 'Zoom on load attempt'
            },


            legend: {
                title: {
                    text: 'Population density per km²'
                }
            },

            colorAxis: {
                min: 1,
                max: 1000, …
Run Code Online (Sandbox Code Playgroud)

javascript highcharts highmaps

3
推荐指数
2
解决办法
5679
查看次数

如何在Passport.js中定义多个isAuthenticated函数?

我正在使用Express/Node.js和Passport.js(本地护照)和Mongoose构建应用程序.

有两种用户:

  1. 普通用户(他们使用/user-login页面和护照策略登录'local-user-login';常规用户存储在"用户"MongoDB集合中)
  2. 管理员(他们使用/admin-login页面和护照策略登录'local-admin-login';管理员存储在"Admins"MongoDB集合中)

我还有2个页面:(只/user_home需要记录的普通用户可以访问)和/admin_home(仅限登录的管理员)

路线/user_home:

app.get('/user_home', isLoggedIn, function(req, res) {
    // render the page
});

function isLoggedIn(req, res, next) {
    if (req.isAuthenticated())
        return next();
    res.redirect('/login');
}
Run Code Online (Sandbox Code Playgroud)

如果我以管理员身份登录并尝试访问/user_home,则不允许我这样做,这很好.我的问题是:如何定义另一个" isLoggedIn"函数来检查我是以管理员而不是普通用户身份登录的?理想情况下,我希望有一个函数"isLoggedInAsUser",另一个函数是"isLoggedInAsAdmin".

到目前为止,我尝试/admin_home 以相同的方式定义路线:

app.get('/admin_home', isLoggedIn, function(req, res) {
    // render the page
});
Run Code Online (Sandbox Code Playgroud)

但很明显为什么它不起作用.代码不知道我希望它检查它是否是管理员而不是普通用户.

mongoose node.js express passport-local passport.js

1
推荐指数
1
解决办法
1528
查看次数