gpt4 book ai didi

javascript - 无法使用 Angular 2 执行登录验证

转载 作者:行者123 更新时间:2023-12-01 02:20:10 25 4
gpt4 key购买 nike

嗨,我在这里创建了一个登录页面,如果响应正常,则必须登录,否则必须显示错误。下面是我的 json 数据,我必须正确提供电子邮件和密码:

{ 
Email": "maxwil@ecoweb.com",
password:56897

}

以下是我的登录方法:

 this.serv.getLogin(data.Email,data.password).subscribe(res=>{
if (res.Data.Id === 0 && res.Data.Id === null || res.Status === 'false') {
alert('please check the username or password');
return false;
} else {
console.log(res);
localStorage.setItem('UserDetails', JSON.stringify(res));
this.router.navigate(['/TrackDriver']);
return true;
}

},err => {
console.log(err);
});

这里的问题是,即使我提供了不正确的用户名和密码,它仍然可以登录。如果我使用上面的邮件 ID 和密码正确登录

{
"Data": {
"Email": "maxwil@ecoweb.com",
"Id": "1",
"Name": "Admin"
},
"ErrorCode": "201 - Success",
"Message": "Success",
"Status": true
}

如果提供不正确的详细信息,它也会登录并获取此响应

{
"Data": {
"Email": null,
"Id": null,
"Name": null
},
"ErrorCode": "501 - No Data Found",
"Message": "Please Check Credentials",
"Status": false
}

尽管我提供了详细信息,但它正在登录,我不知道问题是什么

最佳答案

问题出在 getLogin 回调中的 if 语句:

if (res.Data.Id === 0 && res.Data.Id === null || res.Status === 'false') {

此语句永远不可能为真,因为 res.Data.Id 不能同时为 0null 并且res.Status 的类型不匹配:实际结果中的 false( bool 值)和语句中的 'false'(字符串)。

更改语句的第二部分以检查 res.Status 是否为 false:

if ([...] || !res.Status)

如果0null都是登录失败的标志,则更改语句的第一部分:

if (res.Data.Id === 0 && res.Data.Id === null || [...])

由于 0null 都是 falsy 值,因此您可以将此语句简化为以下内容:

if (!res.Data.Id || !res.Status)

关于javascript - 无法使用 Angular 2 执行登录验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49256129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com