2014-07-09 35 views
4

有人可以簡單解釋一下,解析雲代碼中的master key是什麼?解析雲中的主鍵是什麼?

最近實施的CC功能(使用主密鑰)是否有可能改變其他非雲代碼功能的行爲?

作爲一個實例,您有一個正常工作的解決方案,可讓當前用戶將其他PFUser對象添加到關係中,並在需要時刪除它們。在此之前,您不需要master key,因爲您將當前用戶寫入PFUser currentUser。稍後您創建另一種類型的用戶關係,您要在其中編寫另一個PFUser對象,現在此時您需要使用master key,因爲如果沒有這個,currentUser將無法​​寫入另一個PFUser對象。因此,您將創建一個雲代碼文件來處理此問題,併爲實際編寫其他用戶的currentUser提供合法性。現在一切正常,當實際用戶想寫其他用戶對象時,我們不會收到錯誤。然而發生了一些事當currentUser試圖從他的第一個PFRelation(這在新的cc函數之前也有效)中刪除數據時,他獲得了我們在第一次嘗試寫入其他用戶之前得到的相同錯誤..user must be authenticated via logIn or signUp

我猜想,因爲我們使用主密鑰,它將覆蓋現有/原始安全選項 ,我們需要爲其他每個函數實現它。我對嗎?如果是的話,我該如何處理?或者可以在main.js cc文件中設置不同的限制,每個「舊」功能將以相同方式加上使用主密鑰的新功能?

我真的很感謝這個話題的任何信息,因爲這對我來說是一個巨大的黑洞。

回答

9

主鍵覆蓋所有安全性,例如ACL或基於類的權限。它就像「根」密碼。

只有在需要時才應該調用它,因爲啓用Parse.Cloud.useMasterKey();後的當前請求的所有方法都將使用主密鑰。

您可以通過將選項傳遞給各個查詢/保存/ etc方法來有選擇地使用它。

query.find({ useMasterKey: true }).then(function(results) { // ... 

object.save(null, { useMasterKey: true }).then(// ... 
+0

所以我沒有使用'Parse.Cloud.useMasterKey();'而我能做到這一點'user.save(NULL,{useMasterKey:真}),然後(功能(用戶){。 response.success(user);},function(error){response.error(error)});'在這種情況下,它不會影響整個項目? – rihe

+0

正確! :)把它傳遞給你需要的確切的電話會好得多,而不是爲所有事情啓用它。 – Fosco

+1

謝謝福斯科,我現在就試試。從源頭獲得幫助是很了不起的。 – rihe