引言
本教程为《用WordPress与uni-app开发,包含所有源代码》系列教程之一。
全功能WordPress API接口工具已出
全功能WordPress API接口工具已出只为前端开发者的你设计,详情查看:Sliver Rest Wp api:全功能的WordPress api工具
好了,到这里就已经到达本项目的高潮部分了——app的登录与注册!
我知道大家对这一节的内容已经期待已久了,但是在这一小节中我并没有打算直接讲解怎么做登录与注册,因为考虑到大多数来看这个教程的人都是小白,所以我在这一节中想要先讲解一下功能实现的逻辑,但如果你是大神,那就不用看这一小节了。
开始
其实说白了,对于登录注册功能来说,并没有什么逻辑可言。也就是一个如果该用户没有登录就跳转到登录页面,如果该用户登录了就可以直接进行用户登录后的操作,比如访问app中我的页面。
那么怎么来判断用户有没有登录呢?
这里我们就要用到uni-app中的一个接口——数据缓存:点此直达
比如说我们存了一个用户登录的状态叫做loginState,并且值为false和true,用户在进行权限操作的时候我们就用uni的数据缓存接口中的
getStorage方法去获取一下该值,如果存在并且为true,那么该用户就判断为登录了,然后他就可以进行登录之后的操作。如果没有或者为false,那么就代表该用户没有登录,那么就要进行登录或者注册,而在登录或者注册成功之后我们就调用数据缓存接口中的setStorageSync方法来存储或改变 loginState值 。
另一种实现功能的假设
上面我简单说了怎么实现登录注册的一个逻辑,但是这并不会满足大多数的业务需求,就比如说我现在手上的一个项目。这个项目需要实现的功能是用户的登录是有时间限制的,比如说需要几个小时或者几天用户登录状态就失效了,这样子的话按照上面的逻辑我们就需要在存储登录状态的时候设置一个失效时间,每次我们要去获取这个值的时候就要同时去获取失效时间。取了失效时间之后我们要判断,判断时间是不是到了,如果到了那么该用户的登录状态就失效了,需要重新登录。
但是一切就真的这么简单吗?你会不会觉得这样做很麻烦?有没有办法不去每次都判断?有没有办法让这个状态自动失效?
如果你进行过web开发你就会发现其实uni的这套接口就是Web Storage,那你就应该也知道这玩意是不能自动失效的(建议大家可以先百度一下)。
但是如果你说以上什么每次判断啊啥都对你来说都不算麻烦,那么你有没有考虑过另外一个问题,就是是否真的安全?你就存一个登录状态就可以了吗?用一个登录状态就让用户进行权限操作,这也太过于草率了吧。这样我们是不是就要还存一下用户信息?比如登录名,比如密码,每次用户进行权限操作的时候拿这个用户名和密码去校验一下,如果过了,那就继续,如果没过那就重新登录。
但这样就真的安全了吗?
原谅我是一个不太相信程序的人,我相信总有什么bug是注意不到的。所以,这里我要对登录进行另外一种实现的假设。也就是用redis数据库,用redis数据来存储用户的登录状态和信息。比方说,如果用户登录了,那么我们就把用户信息存到reids数据库中,只需要返回一个指定的秘钥就行了,这个秘钥你可以进行重重设防,让它达到相对的安全(对于程序来说是没有绝对安全的)。每当用户要进行什么权限操作的时候,我们就用这个秘钥去redis数据库中获取用户的信息,而reids数据库是可以设置失效时间的,如果到了失效时间,用这个秘钥获取值肯定是会存在问题的,这时候我们就提示用户登录。而如果我们获取到了用户的信息,比如用户名和密码,然后我们继续校验,如果成功了就继续用户的操作,如果失败了,就返回状态让用户重新登录。
那么你肯定会提出一个问题,就是这样做会不会对服务器造成压力?答案是肯定的,但很小,因为redis数据它跟mysql不一样,它相当于是一种缓存技术,而进行上面的操作就相当于你去打开一个静态文件一样的速度,对于现代的服务器来说,这样的压力可以说是小到可以忽略不计的。
这样是不是可行的呢?原谅我没试验过,所以这里声明了只是假设,但按照逻辑来说实现是肯定可以的,在我手上的这个项目中,我就将要使用这样的实现方式。
总结
好了,这这一小节中我讲解了实现登录注册功能的逻辑,并且提出了另外一种实现功能的假设。这里我需要说明的是,这种假设只是我个人的看法,有很多地方肯定是有漏洞的,也许将功能复杂化了也说不定,所以大家不喜勿喷。我这人最怕别人喷了,哈哈!
在接下来的教程中我将一步一步的为大家带来注册登录功能的实现,需要说明的是不是用我假设的方式,而是用第一种方式。
QQ交流群: 824144151
技术援助
需要技术援助?点击这里,帮你解决你的所有问题!PS:可能你离大神之间,只差一个我们!!!!
[post id=18]