【问题标题】:JmsSerializer exclude password field of SonataUserJmsSerializer 排除 SonataUser 的密码字段
【发布时间】:2015-08-25 09:40:35
【问题描述】:

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

我有一个对象与:Application\Sonata\UserBundle\Entity\User

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

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

如何删除密码和盐域?

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

【问题讨论】:

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


    【解决方案1】:

    我的第一个猜测是你的 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。

    Application/Sonata/UserBundle/Resources/config/serializer/Model.user.yml

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

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

    【讨论】:

    • 如果这不起作用清除缓存。这对我有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 2018-12-09
    • 2015-12-19
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多