Php Symfony2(v2.3.4)-使用FOSUserBundle时拒绝访问
当我转到project/web/时,应用程序将我重定向到te-web/login,其中是一个用于登录的表单 但当我获得授权后,在提交表单后,我返回到project/web/path,访问被拒绝。我的设置有什么问题,我想不出来 路由.ymlPhp Symfony2(v2.3.4)-使用FOSUserBundle时拒绝访问,php,symfony,fosuserbundle,Php,Symfony,Fosuserbundle,当我转到project/web/时,应用程序将我重定向到te-web/login,其中是一个用于登录的表单 但当我获得授权后,在提交表单后,我返回到project/web/path,访问被拒绝。我的设置有什么问题,我想不出来 路由.yml my_backend: resource: "@MyBackendBundle/Controller/" type: annotation prefix: / fos_user_security: resource
my_backend:
resource: "@MyBackendBundle/Controller/"
type: annotation
prefix: /
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: /login
use_forward: false
check_path: /login_check
post_only: true
always_use_default_target_path: false
default_target_path: /
target_path_parameter: _target_path
use_referer: false
failure_path: null
failure_forward: false
username_parameter: _username
password_parameter: _password
csrf_parameter: _csrf_token
intention: authenticate
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_ADMIN }
ROLE\u ADMIN
是否与您的用户关联
另外,您是否尝试过删除
anonymous
config参数,或者至少将其设置为默认值(“~”)?如果我理解正确,您的整个应用程序需要身份验证,但/login
提供了输入用户凭据的方法。正确吗?验证后,将为您设置另一个角色,然后是角色\管理员。请使用该站点的app_dev.php版本,在您访问拒绝访问页面后,它会在底部告诉您您的角色 谢谢你们的回答。我解决了这个问题
在我用promote--super命令创建并提升了用户之后,他获得了ROLE\u super\u ADMIN
ROLE。但在我的应用程序的访问控制中只有path:^/,role:role\u ADMIN
所以我将它修改为ROLE\u SUPER\u ADMIN
,现在它可以正常工作,没有拒绝访问的异常
但我还有一个问题。现在,当我使用app.php版本时,一切都正常(在/login
页面登录后,我被重定向到/
),但对于app\u dev.php版本,登录后,我被重定向到web/\u wdt/TOKEN
,页面为空 设置角色层次结构,以便超级管理员可以访问定义为管理员可访问的所有路由:
# app/config/security.yml
security:
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
角色\u ADMIN与我的用户关联(我用--super参数提升了他),我必须尝试删除匿名参数,并查看它是否有助于您正确理解。所有应用程序应仅针对经过身份验证的用户(管理员),仅/登录路径适用于所有人。将此开发人员防火墙添加到主防火墙之前:dev:pattern:^/(_(profiler | wdt)| css | images | js)/security:false请参见: