在“我的站点”上,用户在会话过期时间之前注销。我目前正在使用Cakephp 2.8。它在本地有效,但在服务器上无效。我将网站托管在BigRock上 我非常努力,找不到背后的原因。
在config / code.php
Configure::write('Session', array(
'defaults' => 'php',
'timeout' => 43200 // 30 days
));
答案 0 :(得分:1)
您可以将会话放入数据库或redis / memcached以解决此问题。
答案 1 :(得分:1)
发生此问题是由于负载均衡器将请求路由到不同的服务器,并且服务器被配置为将会话数据以本地存储/缓存机制存储到单个服务器。
当服务器接收到具有由其他服务器分配的会话ID的请求时,它将无法识别该会话ID,因为它在其本地会话存储/缓存中丢失。因此,它将发送401 - Unauthorized
标头供客户端重新认证。
解决方案可以分两层实现:
这两种解决方案都有其优点和缺点,主要缺点是缺乏灵活性。这是微服务架构仅使用jwt
令牌进行身份验证和授权的原因之一。
恕我直言,您决定实施哪一层取决于实施变更的性能和工作量要求。正如我所看到的,您可以轻松地更改应用程序配置以将会话存储在数据库中(尽管更喜欢使用缓存),但是肯定会对性能造成影响。