Php Fr3d LDAP捆绑包与Symfony2和Fos用户捆绑包。域相关参数设置有误
我正在尝试将Fr3d LDAP捆绑包与Symfony2一起使用来验证用户。我也使用fosuser包。第一次身份验证很好,用户被插入数据库,但密码为空。第二次身份验证(注销后)失败:“无效凭据”。有人能帮我吗Php Fr3d LDAP捆绑包与Symfony2和Fos用户捆绑包。域相关参数设置有误,php,symfony,Php,Symfony,我正在尝试将Fr3d LDAP捆绑包与Symfony2一起使用来验证用户。我也使用fosuser包。第一次身份验证很好,用户被插入数据库,但密码为空。第二次身份验证(注销后)失败:“无效凭据”。有人能帮我吗 security: erase_credentials: false encoders: Ens\LunchBundle\Entity\User: plaintext providers: chain_provider: chain:
security:
erase_credentials: false
encoders:
Ens\LunchBundle\Entity\User: plaintext
providers:
chain_provider:
chain:
providers: [fos_userbundle, fr3d_ldapbundle]
fr3d_ldapbundle:
id: fr3d_ldap.security.user.provider
fos_userbundle:
id: fos_user.user_manager
firewalls:
main:
pattern: ^/
fr3d_ldap: ~
form_login:
always_use_default_target_path: true
default_target_path: /
provider: chain_provider
logout: true
anonymous: true
default:
anonymous: ~
配置:
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: Ens\LunchBundle\Entity\User
fr3d_ldap:
driver:
host: my host
port: 389 # Optional
# version: 3
username: +++ # Optional
password: +++ # Optional
bindRequiresDn: false # Optional
bindRequiresDn: true
accountFilterFormat: (&(samaccountname=%s))
# baseDn: OU=Users,OU=R4S,OU=SVRD-44-B,OU=SPB,OU=RU,OU=Offices,DC=tps,DC=local
# accountFilterFormat: (&(uid=%s)) # Optional. sprintf format %s will be the username
# optReferrals: false # Optional
# useSsl: false # Enable SSL negotiation. Optional
# useStartTls: true # Enable TLS negotiation. Optional
# accountCanonicalForm: 3 # ACCTNAME_FORM_BACKSLASH this is only needed if your users have to login with something like HOST\User
# accountDomainName: HOST
# accountDomainNameShort: HOST # if you use the Backslash form set both to Hostname than the Username will be converted to HOST\User
user:
baseDn: ++++
filter: (&(ObjectClass=Person))
attributes: # Specify ldap attributes mapping [ldap attribute, user object method]
- { ldap_attr: samaccountname, user_method: setusername } # Default
- { ldap_attr: name, user_method: setUsernameCanonical } # Default
- { ldap_attr: mail, user_method: setName } # Default
- { ldap_attr: mail, user_method: setEmail } # Optional
User.php
namespace Ens\LunchBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;
use FR3D\LdapBundle\Model\LdapUserInterface;
/**
* @ORM\Entity
* @ORM\Table(name="user")
*/
class User extends BaseUser implements LdapUserInterface
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
protected $name;
/** @var string */
protected $surname;
private $dn;
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}
// public function setUsername($username){
// var_dump($username);die;
// }
/**
* @return string
*/
public function getSurname()
{
return $this->surname;
}
/**
* @param string $surname
*/
public function setSurname($surname)
{
$this->surname = $surname;
}
public function __construct()
{
parent::__construct();
if (empty($this->roles)) {
$this->roles[] = 'ROLE_USER';
}
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set Ldap Distinguished Name.
*
* @param string $dn Distinguished Name
*/
public function setDn($dn)
{
$this->dn = $dn;
}
/**
* Get Ldap Distinguished Name.
*
* @return string Distinguished Name
*/
public function getDn()
{
return $this->dn;
}
}
我在回复这个旧的请求,以便其他人可以找到信息,如果他们需要它 $dn注释中的ORM列信息是键。否则,您将看到以下行为: -用户可以登录一次。 -当用户登录到其用户记录中时,将创建用户记录。请注意,dn字段为空。 -用户可以注销。 -用户此时无法成功登录 类内用户更改$dn的声明以包含注释:
/**
* @ORM\Column(type="string")
*/
private $dn;
你弄明白了吗?我在看以前的帖子。。。