FOSUserBundle 忽略密码字段
FOSUserBundle ignore password field
所以我使用带有 LDAP 的 FOSUserBundle 作为我的身份验证方法,我想知道是否有办法 remove/ignore 我的 FOSUser
实体的 password
字段?
我意识到删除可能不理想(以防它与内部逻辑混淆),但从未使用过该列,当我从固定装置创建 FOSUsers
时我不得不填充它:
$user = new FOSUser();
$user->setDn($item["dn"]);
$user->setEnabled(1);
$user->setUsername($item["samaccountname"][0]);
$user->setUsernameCanonical(strtolower($item["samaccountname"][0]));
$user->setEmail($item["mail"][0]);
$user->setEmailCanonical(strtolower($item["mail"][0]));
$user->setDepartment($ldap_groups[$matches[1]]);
$user->setDepartmentDn($group);
$user->setPassword('blank'); // Is there away to avoid this?
$manager->persist($user);
您实际上可以删除密码,但您必须保留用户界面中定义的 getPassword()
。如果您想保留它,例如当您允许多种登录类型时,您将再次需要它。我建议将该字段设置为可为空。如果您使用注释,只需将 nullable=true
添加到列中即可:
/**
* @ORM\Column(type="string", name="password", nullable=true)
*/
因此,覆盖列学说允许 Inheritance Mapping:
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
* @ORM\AttributeOverrides({
* @ORM\AttributeOverride(name="password",
* column=@ORM\Column(
* name = "password",
* type = "string",
* nullable=true
* )
* )
* })
*/
class FOSUser extends BaseUser implements LdapUserInterface
{
// Extended logic.
}
密码字段仍位于 BaseUser
中,但被 @ORM\AttributeOverride
注释覆盖。
所以我使用带有 LDAP 的 FOSUserBundle 作为我的身份验证方法,我想知道是否有办法 remove/ignore 我的 FOSUser
实体的 password
字段?
我意识到删除可能不理想(以防它与内部逻辑混淆),但从未使用过该列,当我从固定装置创建 FOSUsers
时我不得不填充它:
$user = new FOSUser();
$user->setDn($item["dn"]);
$user->setEnabled(1);
$user->setUsername($item["samaccountname"][0]);
$user->setUsernameCanonical(strtolower($item["samaccountname"][0]));
$user->setEmail($item["mail"][0]);
$user->setEmailCanonical(strtolower($item["mail"][0]));
$user->setDepartment($ldap_groups[$matches[1]]);
$user->setDepartmentDn($group);
$user->setPassword('blank'); // Is there away to avoid this?
$manager->persist($user);
您实际上可以删除密码,但您必须保留用户界面中定义的 getPassword()
。如果您想保留它,例如当您允许多种登录类型时,您将再次需要它。我建议将该字段设置为可为空。如果您使用注释,只需将 nullable=true
添加到列中即可:
/**
* @ORM\Column(type="string", name="password", nullable=true)
*/
因此,覆盖列学说允许 Inheritance Mapping:
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
* @ORM\AttributeOverrides({
* @ORM\AttributeOverride(name="password",
* column=@ORM\Column(
* name = "password",
* type = "string",
* nullable=true
* )
* )
* })
*/
class FOSUser extends BaseUser implements LdapUserInterface
{
// Extended logic.
}
密码字段仍位于 BaseUser
中,但被 @ORM\AttributeOverride
注释覆盖。