Javascript 无法使用angular 2执行登录验证

Javascript 无法使用angular 2执行登录验证,javascript,angular,typescript,Javascript,Angular,Typescript,嗨,这里我创建了一个登录页面,如果响应正常,那么它必须以其他方式登录,它必须显示错误。以下是我的json数据,我必须正确提供电子邮件和密码: { Email": "maxwil@ecoweb.com", password:56897 } 以下是我的登录方式: this.serv.getLogin(data.Email,data.password).subscribe(res=>{ if (res.Data.Id === 0 && res.

嗨,这里我创建了一个登录页面,如果响应正常,那么它必须以其他方式登录,它必须显示错误。以下是我的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
}
尽管我提供了详细信息,但我不知道问题出在哪里,错误在这里:

res.Status === 'false'
您需要的是布尔值,而不是字符串:

res.Status === false // equivalent to !res.Status
因此,这将导致登录验证失败:

{
  "Data": {
    "Email": null,
    "Id": null,
    "Name": null
  },
  "ErrorCode": "501 - No Data Found",
  "Message": "Please Check Credentials",
  "Status": false // <---- Boolean!
}
{
“数据”:{
“电子邮件”:空,
“Id”:空,
“名称”:空
},
“错误代码”:“501-未找到数据”,
“消息”:“请检查凭据”,
“状态”:false/错误如下:

res.Status === 'false'
您需要的是布尔值,而不是字符串:

res.Status === false // equivalent to !res.Status
因此,这将导致登录验证失败:

{
  "Data": {
    "Email": null,
    "Id": null,
    "Name": null
  },
  "ErrorCode": "501 - No Data Found",
  "Message": "Please Check Credentials",
  "Status": false // <---- Boolean!
}
{
“数据”:{
“电子邮件”:空,
“Id”:空,
“名称”:空
},
“错误代码”:“501-未找到数据”,
“消息”:“请检查凭据”,

“Status”:false/问题在于
getLogin
回调中的
if
语句:

if (res.Data.Id === 0 && res.Data.Id === null || res.Status === 'false') {
此语句永远不能为true,因为
res.Data.Id
不能同时为
0
null
,并且
res.Status
的类型不匹配:
false
(布尔值)在实际结果中,而
'false'
(字符串)在语句中

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

if ([...] || !res.Status)
如果
0
null
都是登录失败的标志,请更改语句的第一部分:

if (res.Data.Id === 0 && res.Data.Id === null || [...])
由于
0
null
都是
falsy
值,因此可以将此语句简化为以下内容:

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

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

if (res.Data.Id === 0 && res.Data.Id === null || res.Status === 'false') {
此语句永远不能为true,因为
res.Data.Id
不能同时为
0
null
,并且
res.Status
的类型不匹配:
false
(布尔值)在实际结果中,而
'false'
(字符串)在语句中

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

if ([...] || !res.Status)
如果
0
null
都是登录失败的标志,请更改语句的第一部分:

if (res.Data.Id === 0 && res.Data.Id === null || [...])
由于
0
null
都是
falsy
值,因此可以将此语句简化为以下内容:

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

那么变化是什么呢?@TechieBoy编辑了答案那么变化是什么呢?@TechieBoy编辑了答案那么我该如何纠正它呢?那么我该如何纠正它呢?它们的键/值对应该在登录json文件中引用…
{“Email”:“maxwil@ecoweb.com”,“password”:“56897”}
它们的键/值对应该在登录json文件中引用…
{“Email”:“maxwil@ecoweb.com”,“password”:“56897”}