Symfony 3.4 - 新的安全提供商

时间:2018-01-10 02:05:12

标签: symfony security

我尝试添加提供者。我做错了什么。

我有实体类,我想扩展这个类

namespace AppBundle\Service;

use AppBundle\Entity\Pracownik;
use Symfony\Component\Security\Core\User\UserInterface;


class Userek extends Pracownik implements UserInterface
{
    public function getUsername()
    {
        return $this->getLogin();
    }

    public function getSalt()
    {
        // you *may* need a real salt depending on your encoder
        // see section on salt below
        return null;
    }

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

    public function getRoles()
    {
        return array('ROLE_PRACOWNIK');
    }

    public function eraseCredentials()
    {
    }

    public function isSuperAdmin()
    {
        return false;
    }

}

在security.yml中我添加

encoders:
        AppBundle\Service\Userek: plaintext
providers:
    pracownik_db_provider:
        entity:
            class: AppBundle\Service\Userek
            property: login
firewalls:
     main:
          pattern: ^/
          form_login:
              provider: pracownik_db_provider
              login_path: /login
              check_path: /login_check
          logout:
              path: /logout
              target: /login

当我尝试登录时,我收到了消息:

The class 'AppBundle\Service\Userek' was not found in the chain configured namespaces AppBundle\Entity, FOS\UserBundle\Model"

如果我实现Class Pracownik从实现的类中添加方法而不创建扩展Pracownik类的额外新类 - 作品

1 个答案:

答案 0 :(得分:1)

尝试将Userek类移到AppBundle\Entity\文件夹,因为Doctrine希望在该文件夹Entity\上找到模型类。

AppBundle\Service\Userek.php移至AppBundle\Entity\Userek.php,如果仍然收到错误消息,请返回。

如果您希望Doctrine使用其他文件夹来存储您的模型类或实体,您可以在here或完整文档Doctrine configurations上找到一些帮助。