symfony - JmsSerializer 排除 SonataUser 的密码字段

标签 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 但它似乎没有使用该配置,即使我清除了缓存...

最佳答案

我的第一个猜测是您的SonataUserBundle扩展了FOSUserBundle,如果您检查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 来阻止泄露密码。

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

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

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

关于symfony - JmsSerializer 排除 SonataUser 的密码字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30751221/

相关文章:

symfony - 在 symfony3 中获取渲染子组件中的路由 Controller / Action

symfony - 从 Symfony DateType::class 禁用日期和月份

symfony - 如何过滤用户可以在 Sonata Admin 中看到的实体实例

php - 无法使用 JMS 序列化程序将空数组序列化为空 XML 元素

php - 无法覆盖 Symfony ConstraintViolationList 的 JMS 序列化程序的默认处理程序

php - 如何保存 Swiftmailer 发送的所有电子邮件

php - 如何让 Symfony 应用程序使用其他 Symfony 应用程序的身份验证和授权?

symfony - 奏鸣曲管理员 : Forgotten Password

symfony - fatal error 异常: Error: Class 'ResourceBundle' not found

php - JMS 序列化程序。创建 2 种具有 "one-to-many"关系的模型序列化方式