[英]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.