Moralis 其他對象的安全性

2022-05-09 15:18 更新

適用于 ?Moralis.User? 的相同安全模型可以應用于其他對象。 對于任何對象,您可以指定允許哪些用戶讀取和/或修改該對象。 為了支持這種類型的安全性,每個對象都有一個訪問控制列表,由 ?Moralis.ACL? 類實現(xiàn)。

使用 ?Moralis.ACL? 的最簡單方法是指定對象只能由單個用戶讀取或寫入。 這是通過使用 ?Moralis.User? 初始化 ?Moralis.ACL? 來完成的:?new Moralis.ACL(user)? 生成一個 ?Moralis.ACL?,限制對該用戶的訪問。 與任何其他屬性一樣,保存對象時會更新對象的 ?ACL?。 因此,要創(chuàng)建一個只能由當前用戶訪問的私人筆記:

const Note = Moralis.Object.extend("Note");
const privateNote = new Note();
privateNote.set("content", "This note is private!");
privateNote.setACL(new Moralis.ACL(Moralis.User.current()));
privateNote.save();

然后,只有當前用戶可以訪問此注釋,盡管該用戶登錄的任何設備都可以訪問它。此功能對于您希望跨多個設備訪問用戶數(shù)據的應用程序很有用,例如個人待辦事項。

也可以按用戶授予權限。 您可以使用 ?setReadAccess ?和 ?setWriteAccess ?將權限單獨添加到 ?Moralis.ACL?。 例如,假設您有一條消息將發(fā)送給由多個用戶組成的組,其中每個用戶都有權閱讀和刪除該消息:

const Message = Moralis.Object.extend("Message");
const groupMessage = new Message();
const groupACL = new Moralis.ACL();

// userList is an array with the users we are sending this message to.
for (let i = 0; i < userList.length; i++) {
  groupACL.setReadAccess(userList[i], true);
  groupACL.setWriteAccess(userList[i], true);
}

groupMessage.setACL(groupACL);
groupMessage.save();

您還可以使用 ?setPublicReadAccess ?和 ?setPublicWriteAccess ?一次向所有用戶授予權限。 這允許在留言板上發(fā)表評論等模式。 例如,要創(chuàng)建一個只能由其作者編輯但任何人都可以閱讀的帖子:

const publicPost = new Post();
const postACL = new Moralis.ACL(Moralis.User.current());
postACL.setPublicReadAccess(true);
publicPost.setACL(postACL);
publicPost.save();

被禁止的操作(例如刪除您沒有寫入權限的對象)會導致 ?Moralis.Error.OBJECT_NOT_FOUND? 錯誤代碼。 出于安全目的,這可以防止客戶端區(qū)分哪些對象 ID 存在但受到保護,哪些對象 ID 根本不存在。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號