Symfony2已登录但未经过身份验证

时间:2014-11-20 07:37:51

标签: php security symfony

security.yml

security:

    role_hierarchy:
        ROLE_ADMIN: ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN]

    encoders: 
        Karl\UserBundle\Entity\User: plaintext

    providers:
        main:
            entity:
                class: Karl\UserBundle\Entity\User
                property: email

    firewalls:

        secured_area:
            pattern: ^/
            anonymous: ~
            provider: main
            form_login:
                check_path: login_check
                login_path: login
                username_parameter: _email
            logout:
                path: logout
                target: /

        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

如果我为某个页面设置了一个访问控制,问题就会消失,但之前它不需要acl,它会正常工作,任何人都知道这个问题是什么,或者我是否对防火墙做错了什么?

用户使用ROLE_USER登录,并且还检测到用户名但未经过身份验证。

1 个答案:

答案 0 :(得分:1)

好的我发现了什么问题,

对于用户实体,我拿出了\ Serializable,它现在正在运行。一个问题,如何将其取出使用户进行身份验证?

/**
 * User
 *
 * @ORM\Table(name="User")
 * @ORM\Entity
 * @UniqueEntity("email")
 */
class User implements UserInterface, \Serializable <--taken out and problem solved but why?
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @Assert\NotBlank();
     * @var string
     * @ORM\Column(name="username", type="string", length=32)
     */
    private $username;

    /**
     * @Assert\NotBlank();
     * @Assert\Email();
     * @var string
     * @ORM\Column(name="email", type="string", length=128)
     */
    private $email;

    /**
     * @var string
     *
     * @ORM\Column(name="password", type="string", length=255)
     */
    private $password;

    /**
     * @var string
     *
     * @ORM\Column(name="contact", type="string", length=32)
     */
    private $contact;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="date_create", type="datetime")
     */
    private $dateCreate;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="date_last_login", type="datetime")
     */
    private $dateLastLogin;

    /**
     * @var integer
     *
     * @ORM\Column(name="login_count", type="integer")
     */
    private $loginCount;

    /**
     * @var string
     *
     * @ORM\Column(name="ip_address", type="string", length=32)
     */
    private $ipAddress;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set username
     *
     * @param string $username
     * @return User
     */
    public function setUsername($username)
    {
        $this->username = $username;

        return $this;
    }

    /**
     * Get username
     *
     * @return string 
     */
    public function getUsername()
    {
        return $this->username;
    }

    /**
     * Set email
     *
     * @param string $email
     * @return User
     */
    public function setEmail($email)
    {
        $this->email = $email;

        return $this;
    }

    /**
     * Get email
     *
     * @return string 
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * Set password
     *
     * @param string $password
     * @return User
     */
    public function setPassword($password)
    {
        $this->password = $password;

        return $this;
    }

    /**
     * Get password
     *
     * @return string 
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     * Set contact
     *
     * @param string $contact
     * @return User
     */
    public function setContact($contact)
    {
        $this->contact = $contact;

        return $this;
    }

    /**
     * Get contact
     *
     * @return string 
     */
    public function getContact()
    {
        return $this->contact;
    }

    /**
     * Set dateCreate
     *
     * @param \DateTime $dateCreate
     * @return User
     */
    public function setDateCreate($dateCreate)
    {
        $this->dateCreate = $dateCreate;

        return $this;
    }

    /**
     * Get dateCreate
     *
     * @return \DateTime 
     */
    public function getDateCreate()
    {
        return $this->dateCreate;
    }

    /**
     * Set dateLastLogin
     *
     * @param \DateTime $dateLastLogin
     * @return User
     */
    public function setDateLastLogin($dateLastLogin)
    {
        $this->dateLastLogin = $dateLastLogin;

        return $this;
    }

    /**
     * Get dateLastLogin
     *
     * @return \DateTime 
     */
    public function getDateLastLogin()
    {
        return $this->dateLastLogin;
    }

    /**
     * Set loginCount
     *
     * @param integer $loginCount
     * @return User
     */
    public function setLoginCount($loginCount)
    {
        $this->loginCount = $loginCount;

        return $this;
    }

    /**
     * Get loginCount
     *
     * @return integer 
     */
    public function getLoginCount()
    {
        return $this->loginCount;
    }

    /**
     * Set ipAddress
     *
     * @param string $ipAddress
     * @return User
     */
    public function setIpAddress($ipAddress)
    {
        $this->ipAddress = $ipAddress;

        return $this;
    }

    /**
     * Get ipAddress
     *
     * @return string 
     */
    public function getIpAddress()
    {
        return $this->ipAddress;
    }

    /**
     * @inheritDoc
     */
    public function getRoles(){
        return array('ROLE_USER');
    }

    /**
     * @inheritDoc
     */
    public function getSalt(){
        //return $this->salt;
        return null;
    }

    public function eraseCredentials(){

    }

    /**
     * @inheritDoc
     */
    public function serialize()
    {
        return serialize(array(
            $this->id,
            $this->email,
            $this->password,
            // see section on salt below
            // $this->salt,
        ));
    }

    /**
     */
    public function unserialize($serialized)
    {
        list (
            $this->id,
            $this->email,
            $this->password,
            // see section on salt below
            // $this->salt
            ) = unserialize($serialized);
    }
}