node.js - 如何修复: Cannot read property 'keycloak-token' of undefined in node js?

标签 node.js token undefined keycloak

我已经创建了领域和客户端。 keycloak json 放置在根文件夹中。我仍然收到这样的错误,

Cannot read property 'keycloak-token' of undefined
TypeError: Cannot read property 'keycloak-token' of undefined at SessionStore.get (C:\Users\...\node_modules\keycloak-connect\stores\session-store.js:24:58)
var session = require('express-session');
var Keycloak = require('keycloak-connect');

var memoryStore = new session.MemoryStore();
var keycloak = new Keycloak({ store: memoryStore });

最佳答案

当您设置 app.use(keycloak.middleware()) 且未配置 session 存储时,您会收到此错误。 keycloak-connect 库正在尝试从尚未配置的 session 中读取 keycloak-token 值。您可以通过提供 Authorization header (例如 Authorization: Bearer 123)来避免该错误,但使用 session 存储时的解决方案是对其进行配置。

有关完整示例,请参阅项目依赖项中的 node_modules/keycloak-connect/example/index.js。一个最小的例子 resource protection使用multiple middlewares在下面的路由处理程序中。

advised然而,:

MemoryStore, is purposely not designed for a production environment. It will leak memory under most conditions, does not scale past a single process, and is meant for debugging and developing.

const express = require('express')
const app = express()
const session = require('express-session');
const Keycloak = require('keycloak-connect');
var memoryStore = new session.MemoryStore();
var keycloak = new Keycloak({ store: memoryStore });

// Configure session
app.use(session({
  secret: 'mySecret',
  resave: false,
  saveUninitialized: true,
  store: memoryStore
}));

// Attach middleware
app.use(keycloak.middleware());

// Attach route handler for home page
app.get('/', keycloak.protect(), (req, res, next) => {
  res.json({status: 'ok'})
})

// Start server
app.listen(3005)

关于node.js - 如何修复: Cannot read property 'keycloak-token' of undefined in node js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57095450/

相关文章:

java 。隐式 super 构造函数 Settore() 未定义。必须显式调用另一个构造函数

javascript - 在 GCP App Engine 中使用 NodeJs 和 Babel 的问题

mysql - 返回的node-mysql JSON类型用反斜杠引用

node.js - erlang 将 http 查询绑定(bind)到 ip(或接口(interface))

c - 需要澄清 C token 的定义

iphone - 将设备 token 发送到服务器

api - oAuth2 - WSO2 API 管理器和身份服务器集成

c++ - 库重新定义 NULL

c++ - 对已定义方法的 undefined reference , header 中的声明与源匹配

node.js - 'npm install -g ' 到底是做什么的?