使用 FOS 为 EasyAdminBundle 设置安全性
Posted
技术标签:
【中文标题】使用 FOS 为 EasyAdminBundle 设置安全性【英文标题】:Security setup with FOS for EasyAdminBundle 【发布时间】:2017-06-01 19:50:48 【问题描述】:我正在使用 EasyAdminBundle,现在我正在尝试通过 FOS UserBundle 的表单登录来设置安全性。但是,它并没有真正起作用。 我总是被重定向到 security.yml 中的“failure_path”,而不是成功登录。 我想要什么:
-
点击 /easy-admin
重定向到 FOS 标准登录表单 /easy-admin/login
用我的用户名和密码登录(我知道凭据没问题)
在 /easy-admin 上查看管理员“索引”
这是我的 security.yml 配置:
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
easy_admin:
pattern: ^/easy-admin
context: user
form_login:
provider: fos_userbundle
csrf_provider: security.csrf.token_manager
login_path: fos_user_security_login
check_path: fos_user_security_check
failure_path: /
default_target_path: /easy-admin
anonymous: ~
logout:
path: /logout
target: /easy-admin/login
access_control:
- path: ^/easy-admin/login, role: IS_AUTHENTICATED_ANONYMOUSLY
- path: ^/easy-admin, role: ROLE_SUPER_ADMIN
我的 routing.yml 看起来像这样:
easy_admin_bundle:
resource: "@EasyAdminBundle/Controller/"
type: annotation
prefix: /easy-admin
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
prefix: /easy-admin
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /easy-admin/profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /easy-admin/register
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /easy-admin/resetting
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /easy-admin/profile
所以到目前为止发生的事情是: 我可以点击 /easy-admin,我被重定向到 /easy-admin/login 并查看非常基本的登录表单。提供信息并提交表单后,我被重定向到失败路线。再说一遍:我知道我使用的凭据是正确的!任何想法缺少什么或我还能寻找什么?目前我没有自己的 AuthHandler,但我认为这对于使用会话工作进行基本登录不是强制性的。谢谢
【问题讨论】:
【参考方案1】:所以最后我发现出现了问题: 我们的 cookie 域配置不正确。修复此问题后,它工作正常。
这是最终的配置:
security.yml:
easy_admin: 模式:/easy-admin(.*) 匿名:~ 上下文:用户
form_login:
login_path: /easy-admin/login
check_path: /easy-admin/login_check
default_target_path: /easy-admin/
provider: fos_userbundle
use_referer: false
always_use_default_target_path: true
require_previous_session: false
routing.yml
easy_admin_bundle:
resource: "@EasyAdminBundle/Controller/"
type: annotation
prefix: /easy-admin
fos_user_security:
prefix: /easy-admin
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
【讨论】:
以上是关于使用 FOS 为 EasyAdminBundle 设置安全性的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 4 EasyAdminBundle:纯密码的编码和保存问题
EasyAdminBundle NumberField 是舍入纬度和经度小数
FOSUserBundle 在 EasyAdminBundle 中管理((“用户”实体必须使用“类”选项定义其关联的 Doctrine 实体类))Symfony