Php 登录不';t工作+;Symfony2

Php 登录不';t工作+;Symfony2,php,security,symfony,login,Php,Security,Symfony,Login,更新: 我已经更新了我的用户实体,以便它实现AdvancedUserInterface和必要的功能 <?php namespace VolleyScout\VolleyScoutBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security\Core\User\AdvancedUserInterface; /** * Users * * @ORM\Table(name="users",

更新:

我已经更新了我的用户实体,以便它实现AdvancedUserInterface和必要的功能

<?php

namespace VolleyScout\VolleyScoutBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;

/**
 * Users
 *
 * @ORM\Table(name="users", indexes={@ORM\Index(name="fk_users_roles1_idx", columns={"role_id"})})
 * @ORM\Entity
 */
class Users implements AdvancedUserInterface
{
    /**
     * @var string
     *
     * @ORM\Column(name="user_username", type="string", length=45, nullable=false)
     */
    private $userUsername;

    /**
     * @var string
     *
     * @ORM\Column(name="user_firstname", type="string", length=45, nullable=false)
     */
    private $userFirstname;

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

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

    /**
     * @var string
     *
     * @ORM\Column(name="user_type", type="string", nullable=false)
     */
    private $userType;

    /**
     * @var string
     *
     * @ORM\Column(name="user_password", type="string", length=60, nullable=false)
     */
    private $userPassword;

    /**
     * @var string
     *
     * @ORM\Column(name="user_salt", type="string", length=30, nullable=false)
     */
    private $userSalt;

    /**
     * @var string
     *
     * @ORM\Column(name="user_token", type="string", length=45, nullable=true)
     */
    private $userToken;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_created", type="datetime", nullable=false)
     */
    private $userCreated;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_modified", type="datetime", nullable=true)
     */
    private $userModified = null;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_deleted", type="datetime", nullable=true)
     */
    private $userDeleted = null;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_lastlogin", type="datetime", nullable=true)
     */
    private $userLastlogin = null;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_confirmed", type="datetime", nullable=true)
     */
    private $userConfirmed = null;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="user_locked", type="datetime", nullable=true)
     */
    private $userLocked = null;

    /**
     * @var integer
     *
     * @ORM\Column(name="user_id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $userId;

    /**
     * @var \VolleyScout\VolleyScoutBundle\Entity\Roles
     *
     * @ORM\ManyToOne(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Roles")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="role_id", referencedColumnName="role_id")
     * })
     */
    private $role;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Teams", inversedBy="user")
     * @ORM\JoinTable(name="user_follows_teams",
     *   joinColumns={
     *     @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="team_id", referencedColumnName="team_id")
     *   }
     * )
     */
    private $team;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Competitions", inversedBy="user")
     * @ORM\JoinTable(name="user_follows_competitions",
     *   joinColumns={
     *     @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="competition_id", referencedColumnName="competition_id")
     *   }
     * )
     */
    private $competition;

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->team = new \Doctrine\Common\Collections\ArrayCollection();
        $this->competition = new \Doctrine\Common\Collections\ArrayCollection();
        $this->userSalt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
    }


    /**
     * Set userUsername
     *
     * @param string $userUsername
     * @return Users
     */
    public function setUserUsername($userUsername)
    {
        $this->userUsername = $userUsername;

        return $this;
    }

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

    /**
     * Set userFirstname
     *
     * @param string $userFirstname
     * @return Users
     */
    public function setUserFirstname($userFirstname)
    {
        $this->userFirstname = $userFirstname;

        return $this;
    }

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

    /**
     * Set userSurname
     *
     * @param string $userSurname
     * @return Users
     */
    public function setUserSurname($userSurname)
    {
        $this->userSurname = $userSurname;

        return $this;
    }

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

    /**
     * Set userEmail
     *
     * @param string $userEmail
     * @return Users
     */
    public function setUserEmail($userEmail)
    {
        $this->userEmail = $userEmail;

        return $this;
    }

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

    /**
     * Set userType
     *
     * @param string $userType
     * @return Users
     */
    public function setUserType($userType)
    {
        $this->userType = $userType;

        return $this;
    }

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

    /**
     * Set userPassword
     *
     * @param string $userPassword
     * @return Users
     */
    public function setUserPassword($userPassword)
    {
        $this->userPassword = $userPassword;

        return $this;
    }

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

    /**
     * Set userSalt
     *
     * @param string $userSalt
     * @return Users
     */
    public function setUserSalt($userSalt)
    {
        $this->userSalt = $userSalt;

        return $this;
    }

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

    /**
     * Set userToken
     *
     * @param string $userToken
     * @return Users
     */
    public function setUserToken($userToken)
    {
        $this->userToken = $userToken;

        return $this;
    }

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

    /**
     * Set userCreated
     *
     * @param \DateTime $userCreated
     * @return Users
     */
    public function setUserCreated($userCreated)
    {
        $this->userCreated = $userCreated;

        return $this;
    }

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

    /**
     * Set userModified
     *
     * @param \DateTime $userModified
     * @return Users
     */
    public function setUserModified($userModified)
    {
        $this->userModified = $userModified;

        return $this;
    }

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

    /**
     * Set userDeleted
     *
     * @param \DateTime $userDeleted
     * @return Users
     */
    public function setUserDeleted($userDeleted)
    {
        $this->userDeleted = $userDeleted;

        return $this;
    }

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

    /**
     * Set userLastlogin
     *
     * @param \DateTime $userLastlogin
     * @return Users
     */
    public function setUserLastlogin($userLastlogin)
    {
        $this->userLastlogin = $userLastlogin;

        return $this;
    }

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

    /**
     * Set userConfirmed
     *
     * @param \DateTime $userConfirmed
     * @return Users
     */
    public function setUserConfirmed($userConfirmed)
    {
        $this->userConfirmed = $userConfirmed;

        return $this;
    }

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

    /**
     * Set userLocked
     *
     * @param \DateTime $userLocked
     * @return Users
     */
    public function setUserLocked($userLocked)
    {
        $this->userLocked = $userLocked;

        return $this;
    }

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

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

    /**
     * Set role
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Roles $role
     * @return Users
     */
    public function setRole(\VolleyScout\VolleyScoutBundle\Entity\Roles $role = null)
    {
        $this->role = $role;

        return $this;
    }

    /**
     * Get role
     *
     * @return \VolleyScout\VolleyScoutBundle\Entity\Roles
     */
    public function getRole()
    {
        return $this->role;
    }

    /**
     * Add team
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Teams $team
     * @return Users
     */
    public function addTeam(\VolleyScout\VolleyScoutBundle\Entity\Teams $team)
    {
        $this->team[] = $team;

        return $this;
    }

    /**
     * Remove team
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Teams $team
     */
    public function removeTeam(\VolleyScout\VolleyScoutBundle\Entity\Teams $team)
    {
        $this->team->removeElement($team);
    }

    /**
     * Get team
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getTeam()
    {
        return $this->team;
    }

    /**
     * Add competition
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Competitions $competition
     * @return Users
     */
    public function addCompetition(\VolleyScout\VolleyScoutBundle\Entity\Competitions $competition)
    {
        $this->competition[] = $competition;

        return $this;
    }

    /**
     * Remove competition
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Competitions $competition
     */
    public function removeCompetition(\VolleyScout\VolleyScoutBundle\Entity\Competitions $competition)
    {
        $this->competition->removeElement($competition);
    }

    /**
     * Get competition
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getCompetition()
    {
        return $this->competition;
    }

    private $player;

    /**
     * Get player
     *
     * @return \VolleyScout\VolleyScoutBundle\Entity\Players
     */

    public function getPlayer() {
        return $this->player;
    }
    /**
     * Set player
     *
     * @param \VolleyScout\VolleyScoutBundle\Entity\Players $player
     * @return Users
     */
    public function setPlayer(\VolleyScout\VolleyScoutBundle\Entity\Players $player = null){
        $this->player = $player;

        return $this;
    }


    public function getUsername()
    {
        return $this->userUsername;
    }

    public function getSalt()
    {
        return $this->userSalt;
    }

    public function getPassword()
    {
        return $this->userPassword;
    }


    public function eraseCredentials()
    {
        // Do nothing.
    }

    /**
     * Implementation of UserInterface method
     *
     * @return array Roles
     */
    public function getRoles()
    {
        return ['ROLE_USER'];
    }


    /**
     * Implementation of AdvancedUserInterface method
     *
     * @return boolean
     */
    public function isAccountNonExpired()
    {
        return true;
    }

    /**
     * Implementation of AdvancedUserInterface method
     *
     * @return boolean
     */
    public function isAccountNonLocked()
    {
        return true;
    }

    /**
     * Implementation of AdvancedUserInterface method
     *
     * @return boolean
     */
    public function isCredentialsNonExpired()
    {
        return true;
    }

    /**
     * Implementation of AdvancedUserInterface method
     *
     * @return boolean
     */
    public function isEnabled()
    {
        // CHECK IF $this->confirmed is not null
        return true;
    }
}
My security.yml:

security:
    encoders:
        VolleyScout\VolleyScoutBundle\Entity\Users:
            algorithm: bcrypt
            cost: 15

    role_hierarchy:
        ROLE_ADMIN:       [ROLE_USER]

    providers:
        members:
            entity:
                class: VolleyScoutBundle:Users
                property: userUsername

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern: ^/
            anonymous: true
        secured_area:
            pattern: ^/
            anonymous: ~
            form_login:
                login_path: volley_scout_loginpage
                check_path: volley_scout_logincheck
                username_parameter: login[username]
                password_parameter: login[password]
                always_use_default_target_path: true
                default_target_path: volley_scout_homepage
            logout:
                path:   volley_scout_logout
                target: volley_scout_loginpage
            remember_me:
                 key:      "%secret%"
                 lifetime: 31536000 # 365 days in seconds
                 path:     /
                 domain:   ~ # Defaults to the current domain from $_SERVER
                 remember_me_parameter: remember

    access_control:
         - { path: /_wdt/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
         - { path: /_profiler/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
         - { path: /login, role: IS_AUTHENTICATED_ANONYMOUSLY }
         - { path: /register, role: IS_AUTHENTICATED_ANONYMOUSLY }
         - { path: /admin, roles: ROLE_ADMIN }
         - { path: /.*, role: IS_AUTHENTICATED_FULLY }
更新2:
当我检查dev.log文件时,出现以下错误:

[2014-01-17 18:20:46] event.DEBUG: Notified event "kernel.terminate" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelTerminate". [] []
每次我尝试登录..

请尝试使用-它将帮助您节省几个小时或更多时间。这是用于注册、登录和管理用户的可靠捆绑包。还提供更改安全性、发送电子邮件或更改密码的功能


它在我们的许多项目中帮助了我。

问题正是@Cerad提到的,您没有实现
用户界面
高级用户界面
。看看这些文档,它会给你一些例子来说明如何做到这一点。通过实现
AdvancedUserInterface
,您还可以使用其他很酷的功能,如管理数据库中的
角色
、锁定非“活动”用户或其他很酷的功能。看看这篇文章,我相信它会给你答案

use Symfony\Component\Security\Core\User\AdvancedUserInterface;

class Users implements AdvancedUserInterface
{
    //.....
}
只需确保向用户类添加所需的
getter

对于
用户界面
,您需要以下功能:

getRoles()
getPassword()
getSalt()
getUsername()
eraseCredentials()
对于
AdvancedUserInterface
,您需要上述所有内容,并且

isAccountNonExpired()
isAccountNonLocked()
isCredentialsNonExpired()
isEnabled()

csrf保护令牌在您的登录视图中是否显示良好

您可以尝试添加

{{ form_rest(loginForm) }}

如果不是这样的话,请在表单中的某个地方。

我建议您查看,
UserInterface
将帮助您实现
User
类。请注意,
实体
通常由单数名词调用。您有许多用户,但每个用户都是
User
的一个实例,在我看来,用一个单数名词来考虑每个实体更容易。您的基本问题是,您的用户对象没有实现用户界面,这意味着内置登录检查器将无法启动。安全系统是Symfony更具挑战性的捆绑产品之一。我建议创建一个新的symfony项目,然后按照安全章节中的步骤,为自己建立一个工作系统。一旦你清楚地知道了所有的部分是如何组合在一起的,你就可以开始创建自己的自定义用户了。你能添加登录视图吗?谢谢你的帮助,但我还没有登录。我已经更新了我的开始帖子。可能还有一个小错误,你能看一下吗?我也觉得你的用户名和密码字段名可能是个问题。您认为您可以尝试将
login[username]
更改为仅
username
,并将其更改为密码吗?我检查了我的开发日志,尝试登录时总是出现错误。您知道如何修复它吗?这不是错误,而是调试消息。您使用表单类作为登录表单有什么原因吗?form类的全部目的是让您可以重用表单。您真的需要重新使用登录表单吗?我会按照文档中的示例,用html构建一个静态表单。谢谢你的帮助,但我还没有登录。我已经更新了我的开始帖子。可能还有点小错误,你能看一下吗?
isAccountNonExpired()
isAccountNonLocked()
isCredentialsNonExpired()
isEnabled()
{{ form_rest(loginForm) }}