云开发的数据库权限机制解读丨云开发101

在使用云开发进行开发时,数据库权限是一个让不少人困扰的部分,四种数据库权限,到底是什么意思?其各自的权限、应用场景都是什么?大多数人对于这个机制,还是模糊的。为了帮助大家进行更好的开发,在涉及到具体的代码之前,我们先来了解一下云开发的数据库权限机制。

一、为什么会有权限系统?

云开发和其他常见的开发模式有一处很大的不同就是,其数据库是可以在小程序端直接进行查询,而无需通过服务端提供的特定 API 接口来完成数据查询。这样就会出现一个问题,这个数据到底谁能查?谁不能查?能查到数据的人,能修改数据么?

在传统的应用开发模式中,权限的控制由服务端的后端接口完成,但是,在云开发的模式中,已经不存在传统的后端,因此,我们需要将权限控制进行向前移,但前端的代码因为无法保证安全(前端的数据可能被篡改,不可信),因此,我们需要将权限控制放在一个更加安全的地方,在经过多方权衡后,最终,云开发数据库就变成了云开发控制台中的一个选项。

二、云开发权限系统中的环境与角色

在云开发的权限中,我们会看到一些词,比如创建者所有人管理端,这些词应该如何理解呢?

其实这里在命名上是有一些问题的,管理端和创建者、所有人并不是一个好的对比,如果将管理端更名为管理员,会更容易理解。

fee8h.png

从权限的层面上来看,从管理端到创建者再到所有人,权限是依次收紧的。

管理端,或者叫管理员,其实便是指云开发中的云函数环境的执行权限。因为是在云函数中执行,安全系数较高,因而获得了最高的权限,也就是所谓的管理端权限。这个权限包括了对于所有的数据进行增、删、改、查的能力。

创建者,则指的是创建某条数据的用户,一般来说,是指在小程序端创建数据的用户。数据和用户之间的绑定是基于数据中的 _openid 来实现的,程序在执行中,当前用户的 openid 与数据的_openid一致时,就认为这个用户是数据的创建者。

所有人,指的是除了管理员以外的用户,这个用户一般而言,也是指小程序端的用户。数据和用户之间并不具备直接的关联关系。用户仅能通过数据库权限配置后的开放读取到用户。

三、关于四个不同的权限

云开发的数据库权限共四种,分别是:
1. 仅创建者可写,所有人可读
2. 仅创建者可读写
3. 仅管理端可写,其他人可读
4. 仅管理端可读写

这四种权限各自对应着不同的场景,接下来,我们借一些例子,来看一看四种权限的不同应用场景。

仅创建者可写,所有人可读

这种权限是我们使用最多的权限,特别是一些涉及到UGC的场景,我们一定会需要这个权限,因为我们的需求是产生的内容所有人均可读,写的层面则允许数据的创建者可写。

举个例子,如果你做了一个类似朋友圈的应用,那么你一定希望你的用户发的朋友圈可以被其他用户看到,但不能被其他用户修改,不然就乱套了。

仅创建者可读写

这种权限一般应用在一些用户的个人隐私信息的场景中。这些信息希望用户自己可以读取,但其他用户无法读取,此时,我们便需要仅创建者可读写。

举个例子,如果你做了个人相册的功能,那么你一定希望这个相册是只有你自己能看,而不是被所有人可以看到,因此,你需要选择仅创建者可读写,而不是仅创建者可写,所有人可读。

仅管理端可写,其他人可读

如果描述这个权限的特性,那么就是管理员可以修改,其他人只能看。最适合的场景莫过于各种需要由开发者、平台方管控的东西,比如新闻应用的轮播图列表、商城首页的活动信息等等。这些数据的关键在于所有人都可以看到,同时,所有人也只能看到,不能修改,只能有管理员修改。

举个例子,如果你做了一个电商小程序,那么在你的小程序中,你一定希望首页的推广 Banner 由你自己控制,而不是由用户自行控制,基于这样的考虑,你就需要仅管理端可写,其他人可读的权限。

仅管理端可读写

仅管理端可读写,你可以理解为只有云函数中有资格获取这个数据,其他的环境均不允许。这个权限在某些特定的场景下非常有用,举个例子,你的小程序的一些运行日志,你希望在云端可以查看,同时,这个日志不对普通用户展现,这个时候就可以设置为仅管理端可读写。

举个例子,如果你做了一个电商小程序,那么内部的统计数据就需要设置为仅管理端可读写,这样可以确保你的运营数据不会被普通用户所读取,尽可能避免信息的泄露。

四、常见问题

为什么没有所有人可读写的权限?

所有人可读写的数据库应用场景并不多见,而且大多数时候、可以通过管理端完成绕过。不过,如果你真的有了这样的场景,不妨思考一下,你的需求到底是什么?是不是因为你的数据库结构的不合理导致的需要所有人可读写?

所有人可读写数据会造成非常多的问题,比如数据原子化、数据锁等问题,因此,在你实现数据所有人可读写时,一定要考虑场景。

能不能实现更加细粒度的权限控制呢?

当然是可以的,实际上,云开发的数据库中每一条由小程序段完成添加的数据都有一个字段 _openid,我们在进行数据库查询时,系统会自动替我们完成这个字段的对比,如果对比不上,再去查询对应集合的权限控制,看是否给予了非创建者可读写的权限。

你自己在实现时,可以在数据创建时,根据业务需求,在数据中加入对应的字段,然后数据查询时,基于字段中的条件进行对比。

如果你对于云开发有任何问题,都欢迎你在文章留言出留下你的疑问,我们将一一解答。

如果你想要了解更多关于云开发CloudBase相关的技术故事/技术实战经验,请扫码关注【腾讯云云开发】公众号~

1649686-20190912102359956-2122943116.png

转载于:https://www.cnblogs.com/CloudBase/p/11533994.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jremind V0.1.3.0添加透明

这次就把弹出消息的窗口改成了透明,本来说是做鼠标穿透的,给做成了透明,先用着!有时间了再改了。 转载于:https://www.cnblogs.com/joypen/archive/2009/05/11/1693125.html

Java中的NIO非阻塞编程

在JDK1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞API。对于大多数应用来说,这样的API使用很方便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来…

Nginx----基础

静态资源服务 通过本地文件系统提供服务:对css,js文件,图片等静态文件 反向代理服务 缓存:将一些数据经常不变的,缓存到Nginx中,直接给用户提供服务 负载均衡 api服务 OpenResty 数据库的服务比较简单&…

c#开发IE控件

c#开发IE控件主要是对BHO对象是使用,但是我们知道BHO是一个COM对象,而在.NET下开发基于COM的应用,总觉得不是很简单,这里有受控代码与COM的调用,我查找了下,国内并没有此类信息,下面是译稿,翻译的不好,欢迎指出.介绍:我们在浏览Internet信息的时候,往往需要增强用户浏览信息的,…

JVM直接内存

概述 直接内存并不是虚拟机运行时数据区的一部分,也不是Java 虚拟机规范中农定义的内存区域。在JDK1.4 中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的I/O 方式,它可以使用native…

英语----专业单词

directive (滴 ‘ruai k tive) n:指令determine 【di tε:min】 (de ter min) v:确定 词根:term 边界 distributions (dis tree biu tion)v:分配 C:发行版 exact (衣 ge za k t) adj:确切的 ex&#xff1a…

js遍历table

js遍历table var tableObj document.getElementById("tableName");var str "";for(var i0;i<tableObj.rows.length;i){for(varj0;j<tableObj.rows[i].cells.length;j){//str tableObj.rows[i].cells[j].innerHTML" ";for(var z0;z<…

深入理解JVM—JVM内存模型

我们知道&#xff0c;计算机CPU和内存的交互是最频繁的&#xff0c;内存是我们的高速缓存区&#xff0c;用户磁盘和CPU的交互&#xff0c;而CPU运转速度越来越快&#xff0c;磁盘远远跟不上CPU的读写速度&#xff0c;才设计了内存&#xff0c;用户缓冲用户IO等待导致CPU的等待成…

Nginx----进阶

用Nginx搭建一个静态的web资源服务器/动静分离 简单使用 1、可以在安装的nginx目录新建自己的目录zy&#xff08;和conf在一个目录下&#xff0c;也就是和html目录在一个目录下&#xff0c;注意如果使用/zy&#xff0c;那么zy目录需要创建在linux根目录&#xff09;&#xff0c…

ASP.NET页面生命周期描述

ASP.NET页面生命周期描述2008-09-12 09:25在以前写个一篇关于ASP.NET页面生命周期的草稿,最近又看了看ASP.NET&#xff0c;做个补充,看看页面初始过程到底是怎么样的 下面是ASP.NET页面初始的过程: 1. Page_Init(); 2. Load ViewState; 3. Load Postback data; 4. Page_Load();…

小程序·云开发的HTTP API调用丨实战

小程序云开发之httpApi调用。 小程序云开发之httpApi调用&#xff08;返回“47001处理”&#xff09; 技术栈 采用 nodejs express 搭建web服务器&#xff0c;采用 axios 请求第三方 httpApi nodejsexpressaxios 项目结构 通过应用生成器工具 express-generator 可以快速创建一…

Java hashCode() 和 equals()使用的场景

第3部分 hashCode() 的作用 hashCode() 的作用是获取哈希码&#xff0c;也称为散列码&#xff1b;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。 hashCode() 定义在JDK的Object.java中&#xff0c;这就意味着Java中的任何类都包含有hashCo…

坚守基本的职业信仰

深陷公司的政治斗争会让任何当事人都疲于奔命&#xff0c;尤其是当这种斗争的双方都是您的上级。除非您一开始就能够知道最终的斗争结果&#xff0c;否则任何具有倾向性的言行都会给自己带来难堪。 深陷入别人的职业斗争是一个职业经理人职业生涯最大的不幸&#xff0c;除非…

Zookeeper----基本原理

Zookeeper作用是什么&#xff1f; 协调分布式系统中的多个服务器&#xff0c;使得系统可以正常工作。 Zookeeper提供了什么&#xff1f; 实际上他只提供了三个东西&#xff0c;一个是文件系统&#xff0c;一个是通知机制&#xff0c;还有一个是集群管理机制 Zookeeper可以做什么…

Java 中 Comparable 和 Comparator 比较

Comparable 简介 Comparable 是排序接口。 若一个类实现了Comparable接口&#xff0c;就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序&#xff0c;假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”&#xff0c;则该List列表(或数组)可以通…

spgridview的过滤功能回调时发生错误~

代码中启用了过滤功能&#xff0c; 但当点击过滤的列时发生错误&#xff1a; error: spgridview_filtercallbackerrorhandler() was called - result 回调时发生错误... 详细见&#xff1a; HTML代码&#xff1a; AllowFiltering"True"FilterDataFields",Name,,…

web---SSL/TSL

对称加密 加密算法秘钥&#xff08;双方持有相同的秘钥&#xff09;&#xff0c;A使用加密算法秘钥加密文件&#xff0c;B使用加密算法秘钥解密文件&#xff1b; 演示一个对称加密RC4算法 注意&#xff1a;RC4加密是有漏洞的 明文和秘钥进行异或得到密文&#xff0c;密文和秘钥…

讨论了好久的问题,IE、Firefox下CSS图片垂直居中的问题

通过百度和谷歌找了好久都没找着一个合适的方法。以下是自己找出的一种方法&#xff0c;自认为还可以&#xff0c;而且&#xff0c;也方便简单。IE:当容器为div,或者tr,只要把容器的Css属性line-height设置成容器的高度就行了.当容器为a,且容器的css属性display为inline-block或…

Nginx----实现https站点

1、首先给域名设置证书&#xff0c;可以去阿里云购买 1、下载自动化脚本 目的&#xff1a;帮我们自动在nginx配置中添加证书 yum install python2-certbot-nginx2、输入命令 certbot --nginx --nginx-server-root/usr/local/openresty/nginx/conf/ -d zy.com 选择我们的url请求…

TCP/IP四层模型和OSI七层模型的概念

TCP/IP四层模型 TCP/IP是一组协议的代名词&#xff0c;它还包括许多协议&#xff0c;组成了TCP/IP协议簇。TCP/IP协议簇分为四层&#xff0c;IP位于协议簇的第二层(对应OSI的第三层)&#xff0c;TCP位于协议簇的第三层(对应OSI的第四层)。 TCP/IP通讯协议采用了4层的层级结构&…