新聞中心
隨著您的應(yīng)用程序范圍和用戶群的增長(zhǎng),您可能會(huì)發(fā)現(xiàn)自己需要對(duì)數(shù)據(jù)片段的訪問(wèn)進(jìn)行更粗粒度的控制,而用戶鏈接的 ACL 無(wú)法提供這些控制。為了滿足這一要求,Moralis 支持一種“基于角色的訪問(wèn)控制”形式。角色提供了一種對(duì)擁有 Moralis 數(shù)據(jù)的公共訪問(wèn)權(quán)限的用戶進(jìn)行分組的邏輯方式。角色是包含用戶和其他角色的命名對(duì)象。授予角色的任何權(quán)限都隱式授予其用戶以及它包含的任何角色的用戶。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、隴縣網(wǎng)站維護(hù)、網(wǎng)站推廣。
例如,在您的包含策劃內(nèi)容的應(yīng)用程序中,您可能有許多被視為“版主”的用戶,可以修改和刪除其他用戶創(chuàng)建的內(nèi)容。您可能還擁有一組“管理員”用戶,并被授予與版主相同的所有權(quán)限,但也可以修改應(yīng)用程序的全局設(shè)置。通過(guò)將用戶添加到這些角色,您可以確保新用戶可以成為版主或管理員,而無(wú)需手動(dòng)為每個(gè)用戶授予每個(gè)資源的權(quán)限。
我們提供了一個(gè)名為 ?Moralis.Role? 的專用類,它在您的客戶端代碼中表示這些角色對(duì)象。 ?Moralis.Role? 是 ?Moralis.Object? 的子類,具有所有相同的功能,例如靈活的模式、自動(dòng)持久性和鍵值接口。 ?Moralis.Object? 上的所有方法也存在于 ?Moralis.Role? 上。不同之處在于 ?Moralis.Role? 有一些特定于角色管理的附加功能。
Moralis.Role 屬性
?Moralis.Role? 有幾個(gè)與 ?Moralis.Object? 不同的屬性:
- ?
name?:角色的名稱。 此值是必需的,并且只能在創(chuàng)建角色時(shí)設(shè)置一次。 名稱必須由字母數(shù)字字符、空格、- 或 _ 組成。 此名稱將用于標(biāo)識(shí)角色,而不需要其 objectId。 - ?
users?:與將繼承授予包含角色的權(quán)限的用戶集的關(guān)系。 - ?
roles?:與角色集的關(guān)系,其用戶和角色將繼承授予包含角色的權(quán)限。
角色對(duì)象的安全性
?Moralis.Role? 使用與 Moralis 上的所有其他對(duì)象相同的安全方案 (ACL),但它需要顯式設(shè)置 ACL。 通常,只有具有極大提升權(quán)限的用戶(例如主用戶或管理員)才能創(chuàng)建或修改角色,因此您應(yīng)該相應(yīng)地定義其 ACL。 請(qǐng)記住,如果您為某個(gè)用戶授予 ?Moralis.Role? 寫入權(quán)限,則該用戶可以將其他用戶添加到該角色,甚至完全刪除該角色。
要?jiǎng)?chuàng)建一個(gè)新的 ?Moralis.Role?,您可以編寫:
// By specifying no write privileges for the ACL, we can ensure the role cannot be altered.
const roleACL = new Moralis.ACL();
roleACL.setPublicReadAccess(true);
const role = new Moralis.Role("Administrator", roleACL);
role.save();您可以通過(guò) ?Moralis.Role? 上的?users?和?roles?關(guān)系添加應(yīng)該繼承新角色權(quán)限的用戶和角色:
const role = new Moralis.Role(roleName, roleACL);
role.getUsers().add(usersToAddToRole);
role.getRoles().add(rolesToAddToRole);
role.save();將 ACL 分配給您的角色時(shí)要格外小心,以便它們只能由應(yīng)該有權(quán)修改它們的人進(jìn)行修改。
其他對(duì)象的基于角色的安全性
現(xiàn)在您已經(jīng)創(chuàng)建了一組在應(yīng)用程序中使用的角色,您可以將它們與 ACL 一起使用來(lái)定義其用戶將獲得的權(quán)限。 每個(gè) ?Moralis.Object? 都可以指定一個(gè) ?Moralis.ACL?,它提供了一個(gè)訪問(wèn)控制列表,指示哪些用戶和角色應(yīng)該被授予對(duì)該對(duì)象的讀取或?qū)懭朐L問(wèn)權(quán)限。
授予角色對(duì)對(duì)象的讀取或?qū)懭霗?quán)限非常簡(jiǎn)單。 您可以使用 ?Moralis.Role?:
const moderators = /* Query for some Moralis.Role */;
const wallPost = new Moralis.Object("WallPost");
const postACL = new Moralis.ACL();
postACL.setRoleWriteAccess(moderators, true);
wallPost.setACL(postACL);
wallPost.save();您可以通過(guò)為 ACL 指定角色名稱來(lái)避免查詢角色:
const wallPost = new Moralis.Object("WallPost");
const postACL = new Moralis.ACL();
postACL.setRoleWriteAccess("Moderators", true);
wallPost.setACL(postACL);
wallPost.save();
角色層次
如上所述,一個(gè)角色可以包含另一個(gè)角色,從而在兩個(gè)角色之間建立父子關(guān)系。 這種關(guān)系的結(jié)果是授予父角色的任何權(quán)限都隱式授予其所有子角色。
這些類型的關(guān)系通常出現(xiàn)在具有用戶管理內(nèi)容的應(yīng)用程序中,例如論壇。 一小部分用戶是管理員,對(duì)調(diào)整應(yīng)用程序的設(shè)置、創(chuàng)建新論壇、設(shè)置全局消息等具有最高級(jí)別的訪問(wèn)權(quán)限。 另一組用戶是版主,他們負(fù)責(zé)確保用戶創(chuàng)建的內(nèi)容保持適當(dāng)。 任何具有管理員權(quán)限的用戶也應(yīng)該被授予任何主持人的權(quán)限。 要建立這種關(guān)系,您可以讓您的管理員角色成為版主的子角色,如下所示:
const administrators = /* Your "Administrators" role */;
const moderators = /* Your "Moderators" role */;
moderators.getRoles().add(administrators);
moderators.save(); 網(wǎng)站題目:創(chuàng)新互聯(lián)Moralis教程:Moralis角色
網(wǎng)站地址:http://fisionsoft.com.cn/article/cosgdgp.html


咨詢
建站咨詢
