我必须对Symfony 4项目进行管理员访问控制。每个人都在使用安全捆绑包,但是由于与OVH服务器相关的技术原因,我们无法将MySQL版本从5.6升级到5.7。
Indeed Security必须与MySQL 5.7一起使用,因为使用Security创建的User实体使用的JSON格式无法通过以前的版本进行解码。
但是如果没有安装Security,我将无法访问config / packages / security.yaml,而且我真的不知道如何创建我的登录功能。如果创建该文件,将浏览错误:
“没有扩展名能够加载“安全性”的配置。寻找名称空间“安全性”,找到“框架”,“ web_server”,“制造者”,“ doctrine_cache”,“ doctrine”,“ doctrine_migrations”,“树枝”,“ swiftmailer”,“ sensio_framework_extra”,“ knp_paginator”“
我看到存在另一个库FOSUSERBundle,但似乎不推荐使用Symfony 4。
那我该怎么办?您是否知道一种使用不带有安全性捆绑包的用户实体中加密的密码来创建受保护的登录表单的方法?
答案 0 :(得分:2)
您可以将SecurityBundle与旧的MySQL版本一起使用。实际上,JSON字段的问题与SecurityBundle根本无关,而与Doctrine DBAL有关。
在您的config.yaml
中查找教义设置,然后在该块中查找默认情况下将使用5.7的版本。当您更改此设置时,Doctrine将识别出它无法使用JSON类型,并退回到varchar(?)字段或其他内容。您可能需要(本地)更新架构以反映该更改。它应该给您带来看起来像在主机基础结构上进行生产设置的结果。