Node.js NodeJS-连接密钥斗篷中间件空响应错误

Node.js NodeJS-连接密钥斗篷中间件空响应错误,node.js,oauth-2.0,connect,middleware,keycloak,Node.js,Oauth 2.0,Connect,Middleware,Keycloak,我在NodeJS中使用connectkeydape中间件时遇到了一个问题,使用过它的人似乎很少提供在线文档。这是基于以下官方文件中的“完整示例”: 在使用curl进行测试时,我遇到了一个意外错误,与未定义的“keydape令牌”有关。在我的代码或源代码中找不到对此的任何引用,在网上也找不到其他有相同问题的人。有人能看出我做错了什么吗 connect KEYOVERE对象按预期包含并实例化: // app.js: // module dependencies var request = requi

我在NodeJS中使用connectkeydape中间件时遇到了一个问题,使用过它的人似乎很少提供在线文档。这是基于以下官方文件中的“完整示例”:

在使用curl进行测试时,我遇到了一个意外错误,与未定义的“keydape令牌”有关。在我的代码或源代码中找不到对此的任何引用,在网上也找不到其他有相同问题的人。有人能看出我做错了什么吗

connect KEYOVERE对象按预期包含并实例化:

// app.js:
// module dependencies
var request = require('sync-request');
var fs = require('fs');
var restify = require('restify');
var Keycloak = require('connect-keycloak');
var session = require('express-session');
var memoryStore = new session.MemoryStore();

// Keycloak
var keycloak = new Keycloak({ store: memoryStore });
并且使用了中间件:

var server = restify.createServer({
    name: 'name',
    version: '1.0.0'
});

server.use(restify.acceptParser(server.acceptable));
server.use(restify.queryParser());
server.use(restify.bodyParser());
server.use(keycloak.middleware({ logout: '/logout', admin: '/' }));

server.use(session({
    secret: 'secret',
    resave: false,
    saveUninitialized: true,
    store: memoryStore
}));
并且keybeapt.protect方法已就位:

server.get(/.*/, keycloak.protect(), restify.serveStatic({
    'directory': './html',
    'default': 'index.html'
}));
然而这个卷曲测试:

curl -H "Content-Type: application/json" -X POST -d '{"query":"test"}' http://localhost:3000/trust-me-on-the-url-being-correct/thanks -i
产生此异常错误(不是我希望的错误):

keydapet.json与app.js包含在同一目录中,因此肯定不是问题的原因

更新:

我意识到这是缺失的,并补充说:

// set session for keycloak
server.use(session({
    secret: 'fsd78d7gdfgds',
    resave: false,
    saveUninitialized: true,
    store: memoryStore
}));
现在,当我的帖子有keydaveat.protect()时的响应错误是:

curl -H "Content-Type: application/json" -X POST -d '{"query":"car"}' http://localhost:3000/blah/blah -i
curl: (52) Empty reply from server

如果没有keydape.protect,响应当然是预期的JSON,因为没有尝试进行身份验证。

事实证明,此代码没有任何错误。问题是,我通过npm安装的节点模块已经过时,在这个中间件支持仅承载身份验证之前


故事的寓意:让你的存储库保持最新

您的代码看起来如何?所有的东西都在同一个班吗?我真的被这件事缠住了,Thanks@User24231您是否正在使用上面链接(版本0.0.16)中所示的connect KeyClope npm包?如果是,请切换到更新KeyClope connect(版本0.0.17)。以前的版本有一个问题,npm包与Git上的更新版本不匹配,导致上述错误。是的,我使用的是最新版本。这实际上是我的server/boot/root.js文件是的,但仍然没有运气:(我刚刚发布了这个,有什么想法吗?
curl -H "Content-Type: application/json" -X POST -d '{"query":"car"}' http://localhost:3000/blah/blah -i
curl: (52) Empty reply from server