首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止匿名会话?

如何防止匿名会话?
EN

Drupal用户
提问于 2019-05-12 18:39:55
回答 2查看 1.3K关注 0票数 0

我的工作是一个网站托管在Acquia和我们使用的清漆和Akamai。我们不希望匿名会话被保存在db中,因为它破坏了缓存。我做了一些调整,并试图追踪这些会议是从哪里来的。我们使用simplesamlphp_auth进行管理登录,使用Okta和/user/login中的LoginRadius模块,所以在登录和会话方面它不是默认的Drupal 8安装。

我想找出匿名会议的来历。但我想知道,除了修复这两个模块之外,是否还有一种方法可以强制Drupal 8不将匿名会话保存到数据库中。是否有一个钩子或事件可以用来防止匿名会话被保存?

如果是的话,会有甚麽影响呢?我猜丢失的曲奇可能是某个控制模块试图设置的?

我看到这样的会议出现了:

代码语言:javascript
复制
*************************** 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 ***************************

或者这个:

代码语言:javascript
复制
          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中获得的:

代码语言:javascript
复制
*************************** 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)
EN

回答 2

Drupal用户

发布于 2019-05-18 09:38:40

通过转储匿名请求的这些变量,找出哪些模块设置了会话数据:

代码语言:javascript
复制
var_dump(\Drupal::request()->getSession()->all());
var_dump($_SESSION);

您可以忽略以_symfony或_sf2开头的symfony元数据。

然后在代码库中搜索设置此数据的会话set()命令。然后,您可以使用移除()更改此代码或删除您自己代码中的会话数据。

当删除所有会话数据时,会话将在请求结束时自动销毁。元数据不算在内。

特例是塞福尼闪光灯袋。这里存储的数据通常只保存在两个请求之间。理想情况下,第一个是重定向,因此第二个会立即发生。Drupal使用闪存袋处理系统消息。这些消息由状态消息块显示和删除,默认情况下启用状态消息块。消息块是不可缓存的,并在每个请求上重新构建,因为缓存系统是如何处理包含会话的请求的。

票数 3
EN

Drupal用户

发布于 2019-05-17 19:37:31

本文介绍了如何删除匿名用户会话:https://www.varnish-software.com/wiki/content/tutorials/drupal/drupal_步骤_通过_step.html#cookies

如果Varnish运行良好,Drupal不应该知道它周围有匿名用户。

票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/281053

复制
相关文章

相似问题

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