我已经开发了一个网站在Drupal 8,并已部署到生产。我已经为我的内容管理团队创建了7-8个其他帐户,并授予他们创建、编辑和删除内容的有限特权。
最近,我在用户登录表单上遇到了一个问题,在这个表单中,登录是零星的。有时我能够在第一次尝试中作为管理员登录,有时我没有。在后一种情况下,我必须通过电子邮件重置我的密码使用重置密码选项。但是,这种方法只暂时适用于单个会话,这意味着一旦我退出,我就无法登录。我的内容经理也遇到了同样的问题。
我试过以下几种方法,但没有运气。
settings.php文件禁用服务器代理配置。update.php文件执行Drupal更新。编辑:我刚刚观察到,我很幸运地忘记了从另一个浏览器火狐上作为超级管理员登录。为了解决这个问题,我做了进一步的调查,并观察到了一个模式。当我从Firefox (幸运地忘记注销)手动清除缓存时,我可以作为管理员登录。但是,这只适用于一个会话,这意味着在注销之后,bug会再次出现。为了使登录再次按预期工作,我必须再次清除Firefox中的缓存。
发布于 2019-04-24 10:26:54
好的,经过近一周的努力,我找到了一个解决这个问题的工作方法:卸载内部动态页面缓存和内部页面缓存模块。
问题是,用户登录表单是在成功登录后缓存的。使用工具,下面的响应头由Drupal设置并发送。
X-Drupal-Dynamic-Cache: HIT为了消除这个问题,我不得不卸载上面的两个模块。
然而,这只是一个解决方案,而不是一个解决方案,因为禁用这两个模块将与站点性能进行权衡。
任何人谁知道这个问题的解决办法,请张贴在这里。我将试用它们并更新这个空间。
提前谢谢你。
发布于 2021-02-05 10:01:39
我在本地环境中也有问题,也有一个自定义登录表单。行为是不一样的,因为对我来说。
这是在清除缓存drush cr之后进行的第一次登录尝试,即使在日志中记录用户已成功登录,也会失败。
我在我的控制器中修复了它,使用了来自核心core/modules/user/src/Plugin/Block/UserLoginBlock.php的一些代码
$form = $this->formBuilder()->getForm('Drupal\user\Form\UserLoginForm');
$placeholder = 'form_action_p_4r8ITd22yaUvXM6SzwrSe9rnQWe48hz9k1Sxto3pBvE';
$form['#attached']['placeholders'][$placeholder] = [
'#lazy_builder' => ['\Drupal\user\Plugin\Block\UserLoginBlock::renderPlaceholderFormAction', []],
];
$form['#action'] = $placeholder;
$build['user_login_form'] = $form;https://stackoverflow.com/questions/55705840
复制相似问题