00:00
下面我们来开发一个登录注册功能。打开我们的控制台,来到数据模型这里,我们去开发。那么这里呢,有我们之前写的这几个啊,其中这个T没什么用啊,我们把它给删掉。宝宝们呢,新建一个新的,上面两个我就不动了,创建个新的。那么我们就叫用户嘛,User。用户。创建好,呃,我们要做登录注册的话呢,我们做一个最简单的用户名和密码注册,所以我们这里要去添加列,默认都会有ID啊,我们要添加列,添加它的用户名username。类型是最是否必须呢?必须要填啊,描述这里填写用户名。确定,然后呢,我们再添加一列啊叫password。Three是我必须必须啊,代表是密码。确定好,那么这样的话呢,咱们就整好了一个数据模型啊,它呢非常简单,就是用户名密码,当然还有一个ID,我们不管是创建也好,创建创建这个user用户也好啊,那么这个ID是不需要你写的,它会自动生成,所以我们不并不需要关心ID,我们只关心用户名和密码。
01:17
好,接下来呢,我们就去开发它对应的这个登录和注册功能,开发云函数。我们点击添加函数啊,给user添加远程函数,我们先开发注册,再去研究登录啊,来好注册。Register。OK,好了,注册呢,需要携带参数啊,那么参数呢,同样都放在data里面,位于玻璃啊参数OK,我们接下来就去开发这个云函数本身。先把其他基本代码写好。
02:03
好,基本代码写好了,接下来我们就去关心这个踹里面到底该怎么写啊。我们先从data里面提取我们想要的数据,用户名和密码,提取好了之后,大家想一想,注册是怎么注册,是不是一上来就直接注册。诶,我们不是啊,整个注册逻辑我们来分析一下,我们呢,注册的时候有个问题,就是我们希望用户名是唯一的,所以整个注注册呢是要先查询。用户名是否存在?存在了说明该用户被注册了,不能注册了,所以我们要返回一个失败的错误。那么怎么做呢?来这时候我们就需要调用user的一个方法,叫find,因为只要找一个啊,所以是find one。这里呢,我们没用find by ID,因为咱们这里没有ID,所以我们用find one好find find方法呢,它的查询它的参数呢叫field field查询条件得写在这个Y里面,千万不要写错了啊。
03:06
得写在VR里面,VR是个对象,在对象里面写我们要搜索的这个用户名,Username。好,它找到了就会返回,找到的这个对象,没有找到返回的就是一个UN find,或者是个now,没有找到就是个空。所以我们接下来就可判断它是否存在。对吧,判断user是否存在,存在说明找到了,找到了就不能注册了,我们就直接返回响应结果。好,开发的时候呢,我们响应结果更多的是这样写的啊,来写一下大家就懂。一起来看这个success有没有都没关系啊,关键是前三个参数code代表咱们的功能是否成功,注意这code不是响应状态码啊,我们只要来到,只要是在串里面返回的值,它响应状态码都是200,那么我们通过一个code的代表它功能有没有没有成功,2016的功能失败,200是功能成功,功能失败message就是失败的原因。
04:24
对吧?该用户已存在data就没有数据,Data是代表成功的数据。所以我们这样反馈好,用户存在就这样啊,那就来下面就说明用户不存在,用户不存在。那么就要注册。对吧,那么注册的话呢,就会用user方法。传我们的username和password注册。然后呢,注册成功之后呢,通常情况下也不需要你啊返回啥啊就是return。
05:00
也不需要你返回注册成功的这个对象,我们就扣的是200MESSAGE,那就没有,因为注册成功了,那么data才是注册成功的数据。那么这样就是我们定义的数据啊,扣的代表是否成功的一个状态标识200成功,非200就是失败。ME1就是失败的原因,那没有失败的话就没有MESSAGE1,它的值就是空,Data就是成功的数据啊,那么失败的话呢,Data同样的也没有指。就这样的。好,但是这样注册有个问题,就是咱们密码呢,现在在数据库存储的时候,就是个铭文的密码啊,大家也知道密码是要进行加密的,否则将来你的数据库的内容一旦泄露啊,铭文的方式泄露的话,那么将来对于用户来讲啊,它的这个用户密码就非常的危险,所以我们密码这一块呢,需要进行加密。传统呢有很多加密算法,有什么对称加密,不对称加密啊,各种加密的方式,我们这里呢,用一种比较简单的一种方式啊,我们用一种MD加密。
06:06
用一种哈希的一种算法加密啊,哈希的算法加密的特点就是同样的铭文加密后一定会得到同样的密码。所以我们去。加密,那么因为将来咱们的这个啊,登录和注册呢,都需要用加密啊,所以说我们加密呢,来先保存一下,我们加密在这里定一个普通函数,专门来做这个加密算法。这样呢,我就可复用了呗。User普通话,他说私类型是不是那for啊,到处都会用,你定义成是也行啊,因为目前其实就要用。定义程式就只有当前模型对象能用,D就是所有模型对象都能用。好,函数名称就是MD加密啊。那方法名呢,我们就叫就不需要加别的了,需不需要参数呢?需要需要一个要加密的这个密码,我们简称为str了。
07:00
好,怎么加密呢?这里我们就要说明一下,我们来看文档。在文档的这个5.3.3.6这里有第三方模块,第三方模块就是咱们数据云呢,默认就内置的以下的no模块,其中有一个CRY,这个就是用来做加密的这个模块,这个模块就是原生no just这个C这个模块啊,就是个。好,我们可以通过这个模块去达到我们这个加密算法。好,怎么做呢?一起来看啊。首先,我们需要找到这个C。它呢?通过models去获取点API models代表所有模型对象,如果你现在要找user模型对象,就models.user代表找到user这个模型对象。啊,那么我们呢,不找这些,我们找接口啊,找他提供的那些第三方模块,那么第三方模块都在这个。
08:00
API里面。那么这样就是拿到这个加密模块了,拿到加密模块之后呢,我们接下来就要创建属于我们MD5的加密方式。汉它叫ch hush,然后传这个MD5,当然还有什么别的Sha,还有一些那些Sha的一些加密算法上256对吧,那些加密算法,这些我们都不用MD5。好,这样呢,就创建出来了,咱们的这个MD5的加密算法,创建好了之后呢,我们接下来就可以去加密了MD5.update。这个方法就是加密的方法,它会对数据进行加密。对吧,这是获取这个模块。然后这个呢,就是我们的啊,生成加密算法函数。八是MD5的加密算法函数啊。然后呢,这里就是对three进行加密。
09:04
加密完之后呢,它的这个串非常的长啊,那么我们希望它短一点的话,有一个D。这个呢,相当于是把它转化成16进制的一个大小,这样呢,它的整个长度就会少短一些些,啊,这就转16进制。好,最后呢,转行之后的数据我们就可以出去了。这样呢,就定义好了一个加密的一个函数,好注意呢,它默认是一个a think函数啊,所以它返回值是个promise项,我们一定要用才行。虽然里面也没有用到别的啊。这个是不是。呃,他保存失败。嗯,End失败啊,那么我们来看一下是不是这个它。好吧,他这里应该是不能在后面写了。
10:10
保存好发布并重启,诶,当然我们注册还没开发好啊,所以说这个还不行,来点击这个注册,我们编辑注册啊,注册的密码要进行加密,那加密的话呢,我们就通过user,因为是。因为我们定的是不是私有的那个函数啊,如果是私有函数就可以直接调了,不是私有的函数呢,要找到模块去找到这个MD5方法,然后调用传这个上面这个password,那么它就会先对password进行MD5加密,加密之后呢返回啊,但是返回值是个promise项,所以咱们这里还需要。Awa。
11:00
好,这里呢,就是对密码进行加密。加密之后,我们放入这个密网进去就好了。来保存。发布重启测试环境。那么这个时候呢,我们就会去注册一个账户啊,来测试一下它到底好不好用。刷新。来到用户模块啊,这里就有个注册,我们点击右边的这个模型对象,那么它会快速跳出我们想要的这个1NAME和password。我们来一个耳的命,耳的in啊的in 123456,注册一个账户名,耳的me,密码是123456,试一试。好,它返回注册失败,那我们来看一下是不是我们有些逻辑写错了,来看一下。我们呢,拿到了username和password,我们首先写find one啊user find one查找查找一个啊,那么这里写的查询条件通过username去查找。
12:04
如果他,呃,我们看一下这个MD5这个发布应该是没有问题的啊。Create hush,然后呢,Updates。进行加密,加密完之后呢,我们对它进行转这个时间机制啊,这些话都是没有问题的。Models apid。CRY这里写错了,CRY萄写错了,这里我们这里没有仔细看啊,刷个啊,葡萄下面是CRY葡萄。OK,下面没问题啊,这里我们写错了,我们发布并重启。这里其实整个开发云函数最困难的点就是它不会有具体的错误提示啊,所以我们需要也仔细的检查咱们这代码有没有写错,因为我们目前写的这个数据库这一块呢,基本没什么问题啊,所以说我就没有过多的去检查这款图,去检查那个MD5了,好了,这时候应该就没问题了,我们试一试。
13:06
诶,注册成功是不是注册成功呢?回到我们把这个窗口再复制一份,重新打打开一个啊,那么在数据模型这里,我们看这user它就注册了一个用户密码,那么密码的话呢,我们也看到它是经过加密之后的密码,所以正常情况下,那么一些其他用户的话呢,可能就不太清楚这个密码到底是怎样的密码了。好啊,那么这是这一款啊,咱们的一个注册,那么下面呢,我们开发一个登录。带动的同样的贝塔,它的请求参数是玻璃啊,我们继续加写。
14:04
登录失败。好,那么在串里面呢,我们可以去完成一些操作。我们首先获取到咱们data里面的数据。这里少一个分号啊。当中呢,同样的也是热name和帕斯的。我们希望呢,它提示的更加详细一些啊,用户名错误,用户名错误,密码错误就密码错误分别提示,所以这里我们可以进行各种操作。第二呢,我们首先通过user.find one。查找我们的其中一个用户,找什么呢?找一。好,如果找都没找到,那就不用说该用户,你用户名写错了,该用户不存在啊,我们就提示这个。Po的话呢,我们可以指定一个新的状态码,也可以说我们就用之前的状态码都行。
15:08
叫message的错误原因。该用户不存在data,就是闹。好来下面说明,应该用户存在,存在之后还要比较密码,比较密码的话呢,我们要比较的是这个password。和我们查询出来的它它里面的word是否相等。但是他们是一定不相等的,为什么呢?因为我们用户传过来的密码是铭文密码,而我们数据库中的密码是加密后的密码,铭文怎么可能和加密后的一样呢?所以肯定会失败的。诶,那么我们接下来呢,就要想办法对吧?可能有同学想到我要对密码进行解密,然后再比较它和铭文是否一致,但是要注意啊,正常情况下这些加密算法都不能解密的,它只能单向加密。
16:00
那该怎么办呢?好,这时候就要说到我们这种MD5加密算法的一个特点,同样的铭文通过加密得到的一定是同样的密嘛,所以我们只要对这个它做的再进行一次加密。再进行一次加密啊,那么对比他们加密后的密文是否一致就好了,只要他们加密之后的密文是一样,那么就肯定是一样的。所以我们这时候接下来。来啊。我们呢,DJ。也是对它进行加密啊,使用user.md5这个方法对pass word进行加密。加密完之后呢,咱们这里就会得到一个密文,我们接下来要比较的就是和密文是否一致。好,一致当然没问题啊,如果不一致,我们又要return错误了。
17:00
对吧,203密码错误。密码不正确。好,如果这些都OK了,那下面就说明都OK了,那我们就返回登录成功就好了。复制吧,还是。成功是200MESSAGE没有值code,这里返回登录成功好了,那么咱们这个接口就开发好了,发布并重启。整体流程就是首先找到这个,根据用户名去找这个用户,如果找不到就是用户有问题,好找到之后呢,再去比较他们的密码,记得咱们用户传过的密码要进行加密,加密之后跟咱们咱们的模型对象数据库中的密码进行比较,那么一样OK,不一样就要密码不正确。好,重启完之后呢,我们在这里刷新它,就会得到一个登录的一个接口,我们用上前面注册的这个密123456去登录。
18:02
试一试登录成功对吧,如果我们用户名写错,试一试它就会用户不存在,如果密码写错。他就会密码不正确,只有用户名和密码都对,它才会返回登录成功。好了,那么这样呢,我们就大家再次开发了一个登录和注册功能,以及给大家写了一个普通函数,用上了一些第三方模块,完成我们指定的操作了。
我来说两句