Moralis 其他對象的安全性

2022-05-09 15:18 更新

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

使用 ?Moralis.ACL? 的最簡單方法是指定對象只能由單個用戶讀取或?qū)懭搿?nbsp;這是通過使用 ?Moralis.User? 初始化 ?Moralis.ACL? 來完成的:?new Moralis.ACL(user)? 生成一個 ?Moralis.ACL?,限制對該用戶的訪問。 與任何其他屬性一樣,保存對象時會更新對象的 ?ACL?。 因此,要創(chuàng)建一個只能由當(dā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();

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

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

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 ?一次向所有用戶授予權(quán)限。 這允許在留言板上發(fā)表評論等模式。 例如,要創(chuàng)建一個只能由其作者編輯但任何人都可以閱讀的帖子:

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

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號