lucene查询筛选器不工作

lucene查询筛选器不工作,lucene,auth0,auth0-delegated-admin,Lucene,Auth0,Auth0 Delegated Admin,我正在我的中使用此过滤器挂钩 function(ctx, callback) { // Get the company from the current user's metadata. var company = ctx.request.user.app_metadata && ctx.request.user.app_metadata.company; if (!company || !company.length) { return callback(n

我正在我的中使用此
过滤器挂钩

function(ctx, callback) {
  // Get the company from the current user's metadata.
  var company = ctx.request.user.app_metadata && ctx.request.user.app_metadata.company;
  if (!company || !company.length) {
    return callback(new Error('The current user is not part of any company.'));
  }

  // The GREEN company can see all users.
  if (company === 'GREEN') {
    return callback();
  }
  // Return the lucene query.
  return callback(null, 'app_metadata.company:"' + company + '"');
}
当公司为绿色的用户登录时,可以看到所有用户。但是当用户登录时,其公司是
红色的
无法看到其公司是
红色的
的任何用户

我需要这样做时,用户登录,用户应该只能访问他的公司内的用户。(绿色公司的用户除外)


但上面的代码并没有给出预期的结果。可能是什么问题?

这可能与屏幕上的一个小警告有关

基本上,它们不再允许您在
app\u metadata
字段中搜索属性。不幸的是,这一变化是突然发生的

我们必须对API进行更改,以便将
app\u元数据的副本保存在单独的数据库中,并将lucene语法转换为MongoDB查询,以便我们可以通过
user\u id:“”或user\u id:“”或…
链进行查询

不过有一点需要注意,您不能传递长度超过72
user\u id
s的查询。这一数字到目前为止还没有记录在案,而且是根据经验得出的

此外,您不能依赖Auth0的钩子将新用户添加到数据库中,因为这些钩子不适用于社交登录,只适用于
用户名密码验证
连接

我希望这能给你一些解释,解释为什么它不起作用,以及一个可能的解决方案。

如果我是你,我会为Auth0寻找一个替代方案,这就是我们目前正在做的。

我最终得到了这个解决方案

使用搜索功能筛选用户。我必须更改以下两个文件

fetchUsers
函数位于
client\actions\user.js

改变

导出函数fetchUsers(搜索='',重置=false,页面=0)

导出函数fetchUsers(search='@red.com',reset=false, 第页=0)

onReset
client\containers\Users\Users.jsx中的函数

改变

onReset=()=>{this.props.fetchUsers('',true);}

onReset=()=>{this.props.fetchUsers('@red.com',true);}


谢谢你的回答。这对我帮助很大。