FOSUserBundle сохраняет пароли в виде открытого текста - PullRequest
0 голосов
/ 21 марта 2020

Я установил FOSUserBundle в приложении Symfony 3.4, чтобы в конечном итоге использовать его с LexikJWTAuthenticationBundle для создания API. Мой security.yml файл выглядит так:

security:

    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    # https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:

        login:
            pattern:  ^/api/login
            stateless: true
            anonymous: true
            json_login:
                check_path:               /api/login_check
                success_handler:          lexik_jwt_authentication.handler.authentication_success
                failure_handler:          lexik_jwt_authentication.handler.authentication_failure

        api:
            pattern:   ^/api
            stateless: true
            guard:
                authenticators:
                    - lexik_jwt_authentication.jwt_token_authenticator

        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

    access_control:
        - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }

... и мой класс User выглядит так:

<?php

namespace AppBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

По какой-то причине, когда я создаю и сохраняю тестового пользователя используя пакет приспособлений Doctrine, таблица fos_user в базе данных показывает пароль нового пользователя в виде открытого текста - не идеально!

Я сделал brew install bcrypt на моей ма c, чтобы убедиться, что У меня установлена ​​необходимая зависимость, и это не помогло. Кто-нибудь знает, что происходит?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

О, я думаю, что вы используете $ user-> setPassword ("pass123") в приборах, я прав? Doctrine не знает, что такое пароль, поэтому он использует его в виде открытого текста. Вы должны использовать UserPasswordEncoderInterfaces encodePassword. Документация здесь

0 голосов
/ 21 марта 2020

Похоже, проблема возникает только когда я пытаюсь загрузить пользователей в осветительные приборы. Если я использую bin / console fos: user: create, пользователь будет создан правильно.

Итак, если предположить, что есть способ выполнить эту команду не в интерактивном режиме, я просто добавлю команду Make, которая вызывает эту команду. Symfony Консоль командует кучу времени при загрузке приборов.

Тем не менее, мне было бы интересно услышать мнение других об этом.

...