我正在尝试使用(并了解)安全性如何在Symfony中运行。我创建了一个登录表单,它适用于硬编码用户。
现在我想在我的数据库中使用现有的用户表。该表包含所有必需的字段,但具有不同的列名。该实体也存在,也有不同的名称(例如“customUserId”而不是“id”)。
类似(使用“MAGIC_MAPPING”):
/**
* @ORM\Table(name="custom_user_table")
* @ORM\Entity
*/
class User implements UserInterface, \Serializable
{
/**
* @ORM\Column(name="customUserId", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @MAGIC_MAPPING so it links this to the mandatory "id" field
*/
private $customUserId;
...
}
有没有办法映射现有字段,以便Symfony将它们用于登录目的?或者至少我可以在不改变数据库结构(仅实体类)的情况下使其工作吗?
我已经尝试了从这个论坛和Symfony文档中的几个动作,但它总是以我无法修复的丑陋错误结束。
任何想法或主角?非常感谢你的帮助,我一直在努力奋斗几个小时......
答案 0 :(得分:1)
您必须更改security.yml文件中的提供程序配置
这是一个例子,我使用管理员实体的电子邮件字段,我想你可以对你的实体做同样的事情
providers:
administrator:
entity: { class: Entity:Administrator, property: email }
答案 1 :(得分:0)
尝试更改该表的ORM文件。 使用Command promt创建一个ORM文件。 然后编辑orm文件。
<mapped-superclass name="FOS\UserBundle\Entity\User" table="your_table_name">
/.../
</mapped>
答案 2 :(得分:0)