JmsSerializer исключает поле пароля SonataUser

Я хотел бы исключить несколько полей (особенно пароль) моего сериализованного объекта.

У меня есть объект, который имеет отношение к: Application\Sonata\UserBundle\Entity\User

Когда я сериализую этот объект, он дает мне пользователя, например:

id: 1,
username: "bla",
salt: "fvasdfs9h834sgkcwsg808000w08ccwo",
password: "E7Qsfswef9zdwfNvS6TecQraLYlbsefetRy/DPbqXvyknccxisefesefCicl4IxnXgSOnBx29Tgtp9ceUs1hPg=="

Как я могу удалить пароль и поле соли?

Я попытался изменить файл конфигурации по адресу: Application/Sonata/UserBundle/Resources/config/serializer/Entity.User.xml, но, похоже, он не использует эту конфигурацию, хотя я очистил кеш...


person Robin    schedule 10.06.2015    source источник


Ответы (1)


Мое первое предположение заключается в том, что ваш SonataUserBundle расширяет FOSUserBundle, если вы отметите Model User of Sonata, поле пароля отсутствует: https://github.com/sonata-project/SonataUserBundle/blob/master/Model/User.php поле пароля находится в модели пользователя FOSUserBundle, поэтому ваш xml файл не используется.

Вы должны установить путь, по которому определены ваши пользовательские свойства:

config.yml

jms_serializer:
    metadata:
        directories:
            FOSUserBundle:
                path: "@ApplicationSonataUserBundle/Resources/config/serializer/"
                namespace_prefix: "FOS\\UserBundle"

Я не привык к XML-файлу, поэтому вот yml, чтобы не показывать пароль.

Приложение/Sonata/UserBundle/Resources/config/serializer/Model.user.yml

FOS\UserBundle\Model\User:
    properties:
        password:
            expose: false

Связанный вопрос/ответ: https://stackoverflow.com/a/12961994/3726645

person HypeR    schedule 11.06.2015
comment
Если это не работает, очистите кеш. В моем случае помогает. - person Daniel; 28.09.2017