Drupal 9 匿名访问用户档案页出现403错误求助
问题背景
搭建Drupal 9站点时,匿名用户访问任何活跃未封禁用户的档案页都会触发403错误,页面提示You are not authorized to access this page.。已排除Layout Builder影响,其他内容类型访问正常;站点使用Bootstrap主题,托管于Pantheon平台。匿名访问档案页的页面输出代码如下:
<div class="region region-content"> <div data-drupal-messages-fallback="" class="hidden"></div> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: * block--mainpagecontent.html.twig * block--system-main-block.html.twig x block--system.html.twig * block.html.twig --> <!-- BEGIN OUTPUT from 'themes/composer/bootstrap/templates/block/block--system.html.twig' --> You are not authorized to access this page. <!-- END OUTPUT from 'themes/composer/bootstrap/templates/block/block--system.html.twig' --> </div> </div>
可能的原因及排查步骤
用户权限未正确分配
Drupal默认匿名用户无访问用户档案的权限,前往/admin/people/permissions页面,确认访问用户档案(View user profiles)权限已勾选分配给匿名用户角色。同时检查是否有自定义权限模块修改了默认权限规则。用户视图的访问控制限制
用户档案页由系统默认用户视图提供内容,检查对应视图(路径/admin/structure/views/view/user_admin_people或前端用户视图)的「访问控制」设置,确保未限制仅登录用户可访问。若使用自定义用户视图,需重点验证其权限规则。第三方模块或自定义代码干预
排查是否安装了用户权限类模块(如userprotect、隐私保护类模块),这类模块可能强制限制档案访问。另外检查自定义模块或钩子函数(如hook_user_access())是否修改了用户档案的访问逻辑。Pantheon缓存未更新
Pantheon的边缘缓存或站点缓存可能导致权限设置变更未生效,尝试通过Drupal后台/admin/config/development/performance清空全站缓存,或使用Pantheon仪表盘清理平台级缓存。Bootstrap主题的模板/预处理逻辑问题
检查主题是否存在自定义的user.html.twig模板,或template_preprocess_user()预处理函数,确认其中未添加错误的访问控制逻辑,导致匿名用户被拦截。用户字段的权限限制
若用户档案包含自定义字段,检查每个字段的「访问权限」设置,确保匿名用户拥有查看这些字段的权限——即使全局档案权限开放,单个字段的权限限制也可能触发403错误。
内容的提问来源于stack exchange,提问作者Zach Rodimel

