【发布时间】:2021-10-08 13:33:06
【问题描述】:
当我使用用户角色登录时单击指向 /admin/stats 页面的链接时收到 403 错误:ROLE_EXPL 应该有权访问该页面。它适用于也可以访问此页面的 ROLE_ADMIN。
查看代码,有三个用户角色,并且指向相关页面的链接 /admin/stats 没有显示在用户角色 ROLE_PASS 的菜单上,而是显示在其他用户角色的菜单上。但是,此链接为 ROLE_EXPL 提供了 403 错误,但对 ROLE_ADMIN 工作正常
谁能建议从哪里开始调试?
代码: 安全.yaml
security:
encoders:
AppBundle\Entity\Pass:
algorithm: bcrypt
providers:
pass_provider:
entity:
class: AppBundle:Pass
property: username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
provider: pass_provider
switch_user: true
form_login:
login_path: login
check_path: login
default_target_path: /home
always_use_default_target_path: true
logout:
path: /logout
target: /login
logout_on_user_change: true
remember_me:
secret: '%kernel.secret%'
lifetime: 604800 # 1 week in seconds
path: /home
role_hierarchy:
ROLE_PASS: ROLE_USER
ROLE_EXPL: ROLE_USER
ROLE_ADMIN: ROLE_USER
access_control:
- { path: ^/admin, roles: ROLE_ADMIN, requires_channel: '%https%' }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: '%https%' }
- { path: ^/forgotten_password, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: '%https%' }
- { path: ^/reset_password, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: '%https%' }
要求的结果:
ROLE_EXPL 应该有权访问页面/admin/stats
【问题讨论】:
-
你想达到什么目的? 403 表示“禁止”,如果这可以使用具有适当角色的另一个用户,一切听起来都很好?
-
不应禁止该用户的链接。链接显示在该用户的管理面板中,但为什么它被禁止?我该如何改变呢?
标签: php symfony http-status-code-403 user-roles