首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复:无法读取节点js中未定义的属性'keycloak-token‘?

如何修复:无法读取节点js中未定义的属性'keycloak-token‘?
EN

Stack Overflow用户
提问于 2019-07-18 13:17:57
回答 1查看 2.6K关注 0票数 2

我创建了领域和客户端。keycloak json放置在根文件夹中。但我还是会犯这样的错误

代码语言:javascript
复制
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)
代码语言:javascript
复制
var session = require('express-session');
var Keycloak = require('keycloak-connect');

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

回答 1

Stack Overflow用户

发布于 2019-11-10 14:43:04

当您设置app.use(keycloak.middleware())而不配置会话存储时,您将得到此错误。keycloak-connect库正在尝试从尚未配置的会话中读取keycloak-token值。您可以通过提供一个Authorization头(例如Authorization: Bearer 123 )来避免错误,但是在使用会话存储时,解决方案是配置它。

有关完整的示例,请参阅项目依赖项中的node_modules/keycloak-connect/example/index.js。在下面的路由处理程序中使用资源保护使用多个中间件的最小示例。

然而,如果是建议,即:

MemoryStore,不是专门为生产环境设计的。在大多数情况下,它都会泄漏内存,不会扩展到单个进程,而是用于调试和开发。

代码语言:javascript
复制
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)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57095450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档