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

标签 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.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/

相关文章:

javascript - Angular 2更改ngFor items类只知道它的索引

javascript - AngularJs - 将事件广播到单个 Controller

javascript - 如何使用 useStyle 为 Material Ui 中的类组件设置样式

javascript - 来自 php 的 JSON 解码信息

javascript - 隐藏文件的文本框上传浏览按钮

javascript - 在 Angular 2 中实现 Wikitude

javascript - 如何使用具有不同变量名称的数据?

javascript - VuePress 未在开发服务器中运行

Angular2 - 如何在模板中引用图像

node.js - 更新 Angular2 到最新版本