升级至Drupal 10.1.7后匿名用户全站访问被拒绝求助
先查基础权限配置
直接进后台/admin/people/permissions,找到“匿名用户”分组,确保access content(访问内容)这类核心权限是勾选状态。另外ECK实体的权限要单独去/admin/structure/eck/entity_type/[你的实体类型]/permissions里查看,匿名用户必须有对应实体的view权限,没勾选的话直接补上。清空缓存+检查路由
升级后缓存大概率有残留,先执行drush cr清空全站缓存,或者在后台/admin/config/development/performance手动清理。之后用drush router:debug查看关键路由(比如<front>首页)的访问规则,确认没被错误设置成仅登录用户可访问。排查模块冲突
先把所有非核心、非ECK的模块临时禁用,测试匿名访问能不能恢复。如果恢复正常,再逐个重新启用模块,定位出冲突的模块。重点排查权限管理类模块,比如Permissions by Term这类,升级后很容易和新核心的权限逻辑产生冲突。检查配置与数据库
打开settings.php看看有没有自定义的权限控制代码(比如自己写的hook_node_access),避免升级后代码逻辑出现问题。另外可以查询数据库的role_permissions表,确认匿名角色(rid对应匿名用户的角色ID)的权限记录是否完整,有条件的话对比升级前的备份数据。确认模块兼容性
检查ECK模块的版本是否适配Drupal 10.1.7,要是ECK版本过旧,直接升级到最新的稳定兼容版试试,很多权限问题都是模块和核心版本不匹配导致的。
内容的提问来源于stack exchange,提问作者Pascal Pivaty

