我的工作是一个网站托管在Acquia和我们使用的清漆和Akamai。我们不希望匿名会话被保存在db中,因为它破坏了缓存。我做了一些调整,并试图追踪这些会议是从哪里来的。我们使用simplesamlphp_auth进行管理登录,使用Okta和/user/login中的LoginRadius模块,所以在登录和会话方面它不是默认的Drupal 8安装。
我想找出匿名会议的来历。但我想知道,除了修复这两个模块之外,是否还有一种方法可以强制Drupal 8不将匿名会话保存到数据库中。是否有一个钩子或事件可以用来防止匿名会话被保存?
如果是的话,会有甚麽影响呢?我猜丢失的曲奇可能是某个控制模块试图设置的?
我看到这样的会议出现了:
*************************** 333. row ***************************
uid: 0
sid: _oo8QqyuF4tMOIIWr-uCOj8aqsknzV1WWkmf0bHzlmQ
hostname: 23.220.148.70
timestamp: 1557934618
session: messages|a:1:{s:7:"warning";a:1:{i:0;O:48:"Drupal\Core\StringTranslation\TranslatableMarkup":3:{s:9:" * string";s:57:"Your session was deliberately ended from another session.";s:12:" * arguments";a:0:{}s:10:" * options";a:0:{}}}}
*************************** 334. row ***************************或者这个:
uid: 0
sid: _VmVWTDsbgQYOcZFxN15Z5j-s4jt4YmsjSZGggphAIM
hostname: 72.247.190.102
timestamp: 1557928795
session: _symfony_flashes|a:1:{s:5:"error";a:1:{i:0;s:49:"Access denied. You must log in to view this page.";}}_sf2_meta|a:3:{s:1:"u";i:1557928795;s:1:"c";i:1557928795;s:1:"l";s:7:"2000000";}
*************************** 335. row ***************************我认为部分问题可能是消息没有在缓存的页面上显示给用户,所以匿名会话不会被清空它们的_symfony_flashes。
最令人关注的是转储了大量用户数据,我认为这是从loginradius中获得的:
*************************** 332. row ***************************
uid: 0
sid: _2PXluVM2rAY29hE-HFkNQQ8_nPdP4QeU4Y3PoX40ws
hostname: 184.25.157.170
timestamp: 1557870161
session: _sf2_attributes|a:5:{s:12:"access_token";s:36:"fb98d952-f1a2-4ba3-820e-2db2c7313008";s:17:"user_profile_data";O:8:"stdClass":146: etc. (I'm not going to post the data here)发布于 2019-05-18 09:38:40
通过转储匿名请求的这些变量,找出哪些模块设置了会话数据:
var_dump(\Drupal::request()->getSession()->all());
var_dump($_SESSION);您可以忽略以_symfony或_sf2开头的symfony元数据。
然后在代码库中搜索设置此数据的会话set()命令。然后,您可以使用移除()更改此代码或删除您自己代码中的会话数据。
当删除所有会话数据时,会话将在请求结束时自动销毁。元数据不算在内。
特例是塞福尼闪光灯袋。这里存储的数据通常只保存在两个请求之间。理想情况下,第一个是重定向,因此第二个会立即发生。Drupal使用闪存袋处理系统消息。这些消息由状态消息块显示和删除,默认情况下启用状态消息块。消息块是不可缓存的,并在每个请求上重新构建,因为缓存系统是如何处理包含会话的请求的。
发布于 2019-05-17 19:37:31
本文介绍了如何删除匿名用户会话:https://www.varnish-software.com/wiki/content/tutorials/drupal/drupal_步骤_通过_step.html#cookies
如果Varnish运行良好,Drupal不应该知道它周围有匿名用户。
https://drupal.stackexchange.com/questions/281053
复制相似问题