簡體   English   中英

lucene查詢過濾器不起作用

[英]lucene query filter not working

我在我的Auth0 Delegated Administration Extension 中使用了這個filter hook

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 + '"');
}

當公司為GREEN用戶登錄時,可以看到所有用戶。 但是當用戶登錄的公司是RED時,看不到任何公司是RED用戶。

我需要在用戶登錄時進行此操作,用戶應該只能訪問其公司內的用戶。 (GREEN公司用戶除外)。

但上面的代碼沒有給出預期的結果。 可能是什么問題?

這可能與“ 用戶搜索”文檔頁面上的警告提示有關

基本上,它們不再允許您在app_metadata字段中搜索屬性。 不幸的是,這一變化是突破性的,而且沒有宣布。

我們必須對API進行更改,以便將app_metadata的副本app_metadata在單獨的數據庫中,並將lucene語法轉換為MongoDB查詢,以便我們可以通過一系列user_id:"<>" OR user_id:"<>" OR ...

請注意,您不能傳遞長度超過72個user_id的查詢。 到目前為止,該數字尚未記錄,並根據經驗獲得。

另外,您不能依靠Auth0的鈎子將新用戶添加到數據庫中,因為這些Username-Password-Authentication僅對Username-Password-Authentication連接有效,不能用於社交登錄。

我希望這能給您一些解釋,說明為什么它不起作用以及可能的解決方案。
如果您是我,我會尋找Auth0的替代方法,這就是我們目前正在做的事情。

您是否仍然對此有疑問或已解決? 我確實有完全相同的問題。 我已經使用Auth0打開了支持通知單-我會讓您知道我收到的反饋。

我認為代碼沒有任何問題,而是搜索功能-返回的lucene查詢應為:app_metadata.company:"RED“

如果您嘗試在委派的admin中運行它而未應用任何鈎子,則該查詢將不起作用。 我可以搜索獨立的用戶屬性,例如電子郵件:“ test@test.com”或名稱:“ john doe”,並且可以,但是如果我嘗試將搜索字符串組合在一起,則app_metadata.company:"test“或user_metadata.company:“測試”,它不起作用:/

我終於解決了這個問題。

使用搜索功能過濾用戶。 我必須更改以下兩個文件。

client\\actions\\user.js fetchUsers函數

導出函數fetchUsers(search ='',reset = false,page = 0)

導出函數fetchUsers(search ='@ red.com',reset = false,page = 0)

onReset在功能client\\containers\\Users\\Users.jsx

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM