2013-01-06 36 views
1

我正在嘗試編寫一個javascript單頁面應用程序,允許用戶登錄,然後在登錄後創建/修改數據庫中的記錄。如果可能的話,我想避免使用自己的服務器端腳本,而不是使用Parse.com,Kinvey.com或Cloudmine.me之類的東西。需要登錄進行寫入訪問的後端即服務?

我的問題是這些服務具有用戶登錄容量,但使用API​​密鑰來確定您的應用程序是否具有寫入權限。當用戶登錄後,他們似乎沒有讓您擁有寫入權限。我唯一能想到的方法就是將用戶的用戶數據中的寫入訪問API密鑰存儲起來,這樣我就可以讓用戶登錄,獲取隱藏的API密鑰,然後更改應用程序的API密鑰以使用該密鑰,以便他們擁有寫入權限。很明顯,這不是很安全,因爲一旦通過網絡發送了API密鑰,即使我們刪除了他們的帳戶或他們更改了密碼,該用戶也將擁有寫入權限。或許我會以錯誤的方式去解決這個問題,所以請隨時告訴我。希望這是有道理的。謝謝!

回答

3

你應該能夠限制訪問使用Parse.ACL一組用戶:http://www.parse.com/docs/js/symbols/Parse.ACL.html

如果你想控制在每個用戶的訪問權限,那麼你將不得不維護用戶對象上的自定義屬性。然後你就可以在BeforeSaveRequest()功能檢查自定義屬性,並決定用戶是否有寫權限:http://www.parse.com/docs/js/symbols/Parse.Cloud.BeforeSaveRequest.html

+1

有趣的是,ACL將適用於所有對象(包括未來的對象),所以它需要登錄才能修改它們?換句話說,這將需要用戶登錄才能寫入任何內容? –

+1

我想我已經想通了 - 我在設置中禁用了「允許創建客戶端類」選項,並且在現有類上會有一個beforeSave以確認用戶已登錄。謝謝! –

0

默認情況下,大多數巴斯供應商應提供集級別的安全性,有的甚至通過ACL的(訪問控制列表),每個條目的安全性提供。

Kinvey例如對集合級安全的幾個變化: http://devcenter.kinvey.com/html5/guides/security#Collectionlevelpermissions

Shared的默認安全級別,使其因此用戶有權讀取集合中的一切,但只能寫自己的物品。您可能還想使用安全級別Private,以便您只能讀取和寫入自己的項目。

如果你想有過安檢,你可以利用入門級權限的更細粒度的控制: http://devcenter.kinvey.com/html5/guides/security#Entitylevelpermissions

隨着入門級權限,你可以給你管理用戶的特定用戶或組細粒度訪問。您甚至可以確定用戶對您的輸入,讀取或寫入具有何種安全級別。如果您需要更好地進行控制,您可以充分利用業務邏輯編寫自己的安全性。

完全披露 - 我是Kinvey的工程師。

相關問題