当时面临如此需求,实在无从下手,后自己想了一个灵活的方法进行面对,特此记录,希望以后不会看不懂自己的代码
登陆界面设置
这个百度一下就可以,与数据库交互的登录界面很是简单,由于本项目要求不可注册,故只有登录、修改密码以及权限锁定,登陆界面略。。。。
监测用户登录错误次数
本项目中,对于用户名以及密码进行校验,故在判断到用户名正确,但是密码错误时,进行计数:
var a = that.data.err_num+1; // a 的数值表示用户输错密码次数
if(a>3){ //如果用户没有退出 次数刷新 重新来,防止剩余次数为 负数
a=0;
}
that.setData({
err_num : a,
b : 3-a // b的数值表示用户 距离锁定账户 还剩下次数 当b=0 登录按钮失能30分钟
})
console.log(that.data.err_num)
wx.showModal({
title: '提示',
icon : "none",
content: '账号或密码错误,剩余次数:' + that.data.b
})
//当用户输错密码 三次后 将状态存入数据库中,使登录按钮失能
if(3 == that.data.err_num ){
wx.request({
url:' ', //此接口用于 改变用户station 登录 or 30分钟后登录
data:{
name:that.data.phone,
station: 'false'
},
method:'GET',
header: {
'content-type': 'application/json'
},
success:res =>{
console.log(res.data)
that.setData({
station : false
})
}
})
将密码输入次数错误超过规定次数的用户记录如数据库,为登录权限验证数据库,每次页面刷线时都会先进行判断该用户是否允许登录。
30分钟记录
此处自己写了一个接口,当用户输入密码错误超过规定次数,微信小程序端就会将该用户名发给接口,接口将该用户登录station 变更为 false,30分钟后会自动将该状态修改为true。
------起初是准备写定时器,后来发现用户退出,定时器就取消了,所有状态就没了,可以尝试写入缓存解决,当并未尝试,有兴趣的朋友可以尝试
效果图