问题标签 [session-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
619 浏览

redis - 如何在 Bluemix 中使用 Spring Sessions 和 Redis 服务?IBM Session Cache 是替代方案吗?

当前的应用程序(与竞争对手)正在使用 Spring-Boot 和 Spring-Sessions 来独立于 Redis 中的实例保存会话数据。

我们如何在 Bluemix 中复制它?

  1. 有没有办法将 Spring-Sessions 添加到 Redis 服务?

  2. 另一个选项是 IBM Session Cache。这适用于 Spring-Boot 和 Spring-Session 吗?会话缓存服务是否在没有 Tomcat 的情况下工作?(例如码头?)

0 投票
1 回答
53 浏览

ibm-cloud - Bluemix Session Cache:驱逐缓存数据的触发器

我在 IBM Bluemix 上创建 Java Web 应用程序。此应用程序通过会话缓存服务在实例之间共享会话对象。

我了解如何使用会话缓存对我的应用程序进行编程。但是如果缓存数据总量超过缓存空间,我找不到任何描述(例如,对于初学者计划,我可以使用 1GB 缓存空间。)。

这些是我的问题。

Q1。是否有任何触发器可以从缓存空间中删除缓存数据?

Q2。超过缓存空间后,会删除哪些数据?有没有最近最少使用、最少使用频率等缓存策略?

0 投票
1 回答
154 浏览

ibm-cloud - 会话缓存服务数据如何存储在外部?

根据 DeveloperWorks 的建议进行交叉发布:https ://developer.ibm.com/answers/questions/212469/can-an-application-hosted-outside-bluemix-access-s.html

我正在探索一个场景,其中我有一个在 BlueMix 外部托管的现有 Java 应用程序。我想让它水平扩展。作为此更改的一部分,我想知道是否可以提供 BlueMix 会话缓存服务以在外部存储应用程序的会话状态。该应用程序将继续在 BlueMix 外部托管,但使用 BlueMix 会话缓存进行会话状态管理。

0 投票
0 回答
204 浏览

jax-rs - 注入 HttpRequest 时出现 Nullpointer 异常

我在 Bluemix 上有一个 Liberty JAX-RS 2.0 应用程序。我的目标是使用 Bluemix 会话缓存服务作为中央会话存储。

在我的界面中,我像这样注入 HttpRequest 对象:

仅使用 Liberty 就可以正常运行(Bluemix 上没有会话缓存绑定)。我什至不访问httpRequest我的测试应用程序中的 ,也不访问httpRequest.getSession(). 将 Session Cache 服务绑定到 Liberty App 并重新暂存该应用程序后,我会在调用 API 时获得以下信息:

java.lang.NullPointerException: 在 com.ibm.ws.xs.sessionmanager.IBMHttpSessionListener.attributeAdded(IBMHttpSessionListener.java:265) 在 com.ibm.ws.session.http.HttpSessionAttributeObserver.sessionAttributeSet(HttpSessionAttributeObserver.java:141) 在 [内部类] 在 org.jboss.weld.context.AbstractConversationContext.sessionCreated(AbstractConversationContext.java:196) 在 org.jboss.weld.servlet 的 org.jboss.weld.context.AbstractConversationContext.copyConversationIdGeneratorAndConversationsToSession(AbstractConversationContext.java:188)。 ConversationContextActivator.sessionCreated(ConversationContextActivator.java:190) 在 [内部类]

根据要求,server.xml - 由 Bluemix 在部署时生成。

所以我猜想注入 HttpRequest 出了点问题......我该如何解决这个问题?

0 投票
1 回答
139 浏览

c - 缓存的 SSL 会话是否保存以前的 X.509 证书信息?

当我们重用之前保存SSL_SESSION的,重用的 SSL 会话是否有原始的 X.509 对等证书?

我的代码很少崩溃,调查显示 SSL 会话被重用,并且 peer cert( certinfo->key->pkey) 的某些字段被弄乱了。

  • 从 CLT 到 SVR 的第一次握手。

    SVR 向 CLT 发送 X.509 证书,CLT 存储该证书。我们可以使用SSL_get_peer_certificate(). CLT 保存SSL_SESSIONSSL_get1_session().

  • 从 CLT 到 SVR 的第二次握手。

    这次 CLT 提供保存SSL_SESSIONSSL_set_session() 发生了简短的握手。当 CLT 调用时SSL_get_peer_certificate(),CLT 可以得到原始的 X.509 证书吗?

似乎与SSL_SESSION对等 X.509 证书的耦合并包含在内是松散的。除了调用 just 之外,我们是否应该通过显式提升 refcnt 来保存 X.509 对等证书以在重用SSL_get1_session时正确使用?SSL_get_peer_certificate()SSL_SESSION

我在 Linux 上使用 LibreSSL 和 OpenSSL。

任何意见将不胜感激。

0 投票
1 回答
1192 浏览

django - 使用redis作为会话后端时,django docker容器无法访问redis容器

我正在尝试部署模仿我的 django+postgresql(AWS RDS)+redis(AWS Elasticache) 的暂存环境。

我使用最新的 django-redis(4.10) 来设置 django 和 redis。我的设置如下:

当我在我的 pipenv 环境中本地运行它时,postgresql 在 AWS RDS 上远程运行,redis 服务器在本地运行brew services,一切正常。但是如果我docker-compose up是容器,django 的会话处理似乎会中断。

我的 docker-compose 如下:(请注意,因为我打算使用 AWS RDS 和 Elasticache,所以我没有在 compose 文件中包含 postgres 和 redis 容器)

当我尝试登录管理站点时,django 容器返回以下错误。

我可以确认 django 没有访问 redis 服务器,因为 redis-cli 的 MONITOR 没有显示任何与 django 相关的日志。

如果我把上面settings.py中的两行注释掉,

我可以登录管理员没有问题,所以它肯定与使用 redis 作为会话后端有关,并且可能是由于无法从 django docker 容器访问 redis。

非常感谢任何帮助!我已经工作了整整两天来解决这个问题,现在我的老板正在为此欺负我。:(

0 投票
0 回答
696 浏览

apache - apache 的 SSLSessionCache 不能与 TLSv1.3 和正常重启一起正常工作?(会话恢复)

我有一个非常简单的 httpd-setup 和 SSLSessionCache 指令集,以便在正常重启后(在共享内存中)会话也可用。

然后我使用 openssl s_client 和 -sess_out 参数连接到服务器,所以我有一个会话文件。

下一步是优雅地重新启动 apache。

然后,这次使用带有 -sess_in 参数的 sessionfile 再次与 openssl s_client 连接。

这与 TLSv1.2 完美配合。

但是使用 TLSv1.3 mod_ssl 会以某种方式退回到完全握手。SSL_session_reused() 返回 false。如果我做了完全相同的测试,但没有在请求之间优雅地重新启动,它会起作用并且 SSL_session_reused() 返回 true。

如果我们跟踪 ssl 消息,我们也可以看到这一点:

没有优雅的重启(正确的行为)

在这里,我们看到客户端在他的 ClientHello 中发送了“预共享密钥”扩展。然后,服务器用他的 ServerHello 进行响应,其中还包含预共享密钥扩展,并直接使用 EncryptedExtensions 和 Finish 消息继续。没有证书和 CertificateVerify 消息...

优雅重启(错误行为)

客户端发送相同的。但是服务器随后用包含“预共享密钥”扩展名的 ServerHello 进行响应。然后是第一次握手中的 Certificate 和 CertificateVerify 消息...

我还看到与 mod_ssl 注册的 OpenSSL 回调相关的奇怪行为:

mod_ssl 注册用于添加、删除和获取会话的所有回调(https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_sess_set_get_cb.html)。也正确设置了 ssl 选项,以便 openssl 不使用其内部缓存。但是现在使用 TLSv1.3,我永远不会陷入“获取会话”回调,而是总是进入“新会话”回调,即使在我离开优雅重启并且 SSL_session_reused 返回 true 的场景中也是如此。我查看了 openssl 代码,实际上,在 TLSv1.3 中,这个回调永远不会被调用。所以我想知道这是否可能是不正确行为的原因......

我认为这是一个非常常见的用例(“允许在正常重启后恢复 ssl 会话”)并且应该像 1.2 一样与 TLSv1.3 一起使用。

任何帮助深表感谢!


更新

这似乎与 SSLSessionTickets 指令有关。随着“SSLSessionTickets off”的恢复工作。如果启用了 SessionTickets,它就不起作用。


0 投票
0 回答
23 浏览

mysql - RDS MySQL 一旦过程出现错误,它会重复直到启动新会话,即使使用有效值

我终于找到了我们在处理数据时收到的间歇性错误。当我们执行存储过程并报告“A 列不能为空”时显示错误,但是当我们跟踪记录并手动运行该过程时,它工作正常。我可以使用以下内容重复此错误。

  1. 使用有效值运行该过程,它成功
  2. 使用无效值运行相同的过程,失败并显示“A 列不能为空”
  3. 使用步骤 1 中的相同有效值重新运行相同的过程,它会失败并出现相同的错误
  4. 打开一个新的选项卡/会话并从步骤 1 重新运行相同的过程,它现在再次成功。

我真的在这个问题上摸不着头脑,似乎找不到正确的文档来提供帮助。我们在 AWS RDS 上使用 MySQL 5.7。似乎会话正在兑现错误,并且只要调用该程序,它就会从现金中提取错误。

0 投票
0 回答
56 浏览

ruby-on-rails - 如何从 Rails 缓存哈希上传照片?

我对 Rails 很陌生,我正在尝试在我的应用程序中实现一个多步骤表单,以创建我的User模型 ( devisegem) 的新实例。

我使用wickedgem 并且我选择了缓存持久性和 ID/Key-in-Session 作为处理它的策略。

现在,一切正常,直到我遇到avatar我的最后一个步骤(a @user has_one_attached :avatar)。

当我尝试提交表单时,我从该行收到以下问题:Rails.cache.write(session.id, user_attrs)

user_attrs当我提交我的图片时,这里是:

好像Rails.cache.write不能写这个头像对象吧?如果是这样,有没有办法解决它?

谢谢您的帮助!

0 投票
1 回答
105 浏览

websphere-liberty - 如何在 AWS 上缓存与 IBM WebSphere Liberty 的会话?

我想将 AWS Elasticache 用于 Liberty 的会话缓存,但看起来 Liberty 的 sessionCache-1.0 功能只能与 JCache 兼容的存储一起使用。(如 Hazelcast、Infinispan 等)。

所以请让我确认一下。

  • 无法将 Liberty 的功能 (sessionCache-1.0) 与 AWS Elasticache 一起使用,这是否正确?
  • 如果是这样,我是否需要为我的应用程序中的会话缓存编写自定义代码?

如果您对如何在 Liberty 中实现会话缓存有任何建议,我将不胜感激。