1

我将 FOSElasticaBundle 与 orm 持久性驱动程序和 JMSSerializerBundle 序列化程序一起使用。

我的用户由 FOSUserBundle 管理,我正在尝试对这些用户进行索引,但排除了一些字段,例如密码。

JMSSerializerBundle 排除策略(例如 @ExclusionPolicy("all") @Expose @Exclude)在添加到扩展 FOS\UserBundle\Model\User 的我的用户实体时没有任何影响。然而,这些策略在我的其他实体上按预期工作。

如何阻止将“盐”和“密码”等字段添加到 Elasticsearch 索引中?

4

2 回答 2

0

作为一种解决方法,我使用'query_builder_method'FOSElasticaBundle 配置设置来调用创建 queryBuilder 的方法,该方法使用 DQL Partial Object Syntax 仅选择我想要索引的字段。

以下是一些有用的链接:

DQL 部分对象语法: http ://docs.doctrine-project.org/en/2.1/reference/dql-doctrine-query-language.html#partial-object-syntax

使用自定义 Doctrine 查询构建器: https ://github.com/FriendsOfSymfony/FOSElasticaBundle#use-a-custom-doctrine-query-builder

于 2014-01-28T14:49:17.787 回答
0

这是序列化程序和注释的已知事情。您还必须在父 (=FOS UserBundle) 模型上定义排除策略。

我已经通过额外的 yaml 配置解决了这个问题:

这是我的配置:

jms_serializer:
    metadata:
        directories:
            - { path: %kernel.root_dir%/Resources/serializer/FOS, namespace_prefix: 'FOS\UserBundle' }

在该文件夹中,我有一个包含以下内容的 User.Model.yml :

FOS\UserBundle\Model\User:
    exclusion_policy: ALL
    properties:
        email:
            expose: true
于 2014-02-19T09:48:53.670 回答