当前位置:  开发笔记 > 编程语言 > 正文

NodeJS - connect-keycloak中间件空响应错误

如何解决《NodeJS-connect-keycloak中间件空响应错误》经验,为你挑选了0个好方法。

我在使用带有NodeJS的connect-keycloak中间件时遇到了问题,并且使用它的人在网上的文档似乎很少.这是基于以下官方文档中的"完整示例":http://keycloak.github.io/keycloak-nodejs/connect/

我在使用curl测试时遇到意外错误,与未定义的'keycloak-token'有关.我在我的代码或源代码中找不到任何引用,也没有在网上遇到同样问题的其他人.谁能看到我做错了什么?

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

// 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
}));

并且keycloak.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

产生这种不寻常的错误(不是我希望的错误):

 POST -d '{"query":"car"}' http://localhost:3000/rest/keywords -i
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 87
Date: Thu, 03 Dec 2015 02:05:40 GMT
Connection: keep-alive

{"code":"InternalError","message":"Cannot read property 'keycloak-token' of undefined"}[addamnilemartin@localhost keyword]$ 

Keycloak.json与app.js包含在同一目录中,绝对不应该是问题的原因.

更新:

我意识到这个缺失并添加了它:

// set session for keycloak
server.use(session({
    secret: 'fsd78d7gdfgds',
    resave: false,
    saveUninitialized: true,
    store: memoryStore
}));

现在我的POST有keycloak.protect()时的响应错误是:

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

没有keycloak.protect,响应是预期的JSON,当然,因为没有尝试认证.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有