JmsSerializer排除SonataUser的密码字段

时间:2015-06-10 08:37:55

标签: symfony sonata-user-bundle jms-serializer

我想排除序列化对象的几个(特别是密码)字段。

我有一个与Application\Sonata\UserBundle\Entity\User

有关系的对象

当我序列化该对象时,它给了我这样的用户:

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

如何删除密码和盐场?

我尝试在Application/Sonata/UserBundle/Resources/config/serializer/Entity.User.xml更改配置文件,但它似乎没有使用该配置,即使我清除了缓存......

1 个答案:

答案 0 :(得分:4)

我的第一个猜测是你的SonataUserBundle扩展了FOSUserBundle,如果你检查Sonata的Model User没有密码字段:https://github.com/sonata-project/SonataUserBundle/blob/master/Model/User.php密码字段在FOSUserBundle的Model用户中,所以不使用你的xml文件。

您必须设置定义自定义属性的路径:

<强> config.yml

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

我不熟悉xml文件,所以这里是yml停止公开密码。

应用程序/奏/ UserBundle /资源/配置/串行器/ Model.user.yml

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

相关问题/答案:https://stackoverflow.com/a/12961994/3726645