我们经常会写到一些涉及到登录功能的网站,但是经常是单用户登录,即网站只验证一次且管理用户只有一个,不需要循环验证。
今天在实现后台管理用户登录的过程中,碰到了多用户验证的问题,即多个管理员,我的描述可能不太准确。
初始我的代码是这样的
check=()=>{
for(var i=0;i<this.state.data.length;i++){
if(this.state.user === this.state.data[i].userName && this.state.password === this.state.data[i].password){
this.props.history.push('/home/shouye')
}else{
alter('用户名密码错误!');
}
}
}
ps:这是基于React的一段代码段
运行时我发现,比如第一个管理员是fan,密码是123,第二个管理员是www,密码是123,在第一个管理员登录验证时,页面可以正常跳转也可以正常验证。但是当我输入第二个管理员信息的时候,会提示用户名密码错误!
我发现这是我的代码的逻辑问题,for循环只能验证数组中下标为0的管理员信息,即i=0时,代码验证用户名密码是否是fan和123如果不是,则提示错误。此时提示错误后,因为表单的数据没有进行更改,所以程序会一直提示错误,提示数组长度遍(即如果数组长度为4,就提示4遍)
发现这个问题后,我把代码改成了如下:
check=()=>{
var islogin =false;
for(var i=0;i<this.state.data.length;i++){
if(this.state.user === this.state.data[i].userName