codecamp

Moralis 其他对象的安全性

适用于 ​Moralis.User​ 的相同安全模型可以应用于其他对象。 对于任何对象,您可以指定允许哪些用户读取和/或修改该对象。 为了支持这种类型的安全性,每个对象都有一个访问控制列表,由 ​Moralis.ACL​ 类实现。

使用 ​Moralis.ACL​ 的最简单方法是指定对象只能由单个用户读取或写入。 这是通过使用 ​Moralis.User​ 初始化 ​Moralis.ACL​ 来完成的:​new Moralis.ACL(user)​ 生成一个 ​Moralis.ACL​,限制对该用户的访问。 与任何其他属性一样,保存对象时会更新对象的 ​ACL​。 因此,要创建一个只能由当前用户访问的私人笔记:

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();

然后,只有当前用户可以访问此注释,尽管该用户登录的任何设备都可以访问它。此功能对于您希望跨多个设备访问用户数据的应用程序很有用,例如个人待办事项。

也可以按用户授予权限。 您可以使用 ​setReadAccess ​和 ​setWriteAccess ​将权限单独添加到 ​Moralis.ACL​。 例如,假设您有一条消息将发送给由多个用户组成的组,其中每个用户都有权阅读和删除该消息:

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 ​一次向所有用户授予权限。 这允许在留言板上发表评论等模式。 例如,要创建一个只能由其作者编辑但任何人都可以阅读的帖子:

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​ 错误代码。 出于安全目的,这可以防止客户端区分哪些对象 ID 存在但受到保护,哪些对象 ID 根本不存在。


Moralis 删除用户
Moralis 会话
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Moralis 文件

Moralis 工具

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }