Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Fr3d LDAP捆绑包与Symfony2和Fos用户捆绑包。域相关参数设置有误_Php_Symfony - Fatal编程技术网

Php Fr3d LDAP捆绑包与Symfony2和Fos用户捆绑包。域相关参数设置有误

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:

我正在尝试将Fr3d LDAP捆绑包与Symfony2一起使用来验证用户。我也使用fosuser包。第一次身份验证很好,用户被插入数据库,但密码为空。第二次身份验证(注销后)失败:“无效凭据”。有人能帮我吗

  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;

你弄明白了吗?我在看以前的帖子。。。