使用POST方法授权用户:: Angular2& TypeScript

时间:2016-12-30 15:58:51

标签: javascript authentication angular post typescript

登录我的应用程序的用户从服务器自动化。它的工作原理如下:

  • 用户将登录名和密码写入单独的输入

  • 当他点击登录按钮时,会在地址上发送http发布请求: http://localhost/api/auth/${this.username}/${this.password}

  • 来自服务器的响应是布尔值。如果登录和密码正常,则响应为 true ,否则为 false

这是我的要求:

this.http.post(`http://localhost/api/auth/${this.username}/${this.password}`, cred, {
  headers: headers
})
    .map(res => res.json())
    .subscribe(
        data => this.response = data,
        err => console.log('error'),
        () => console.log('Authentication Complete')
    );

我的问题是我不知道链接后的cred变量是什么。我需要这些headers吗?它甚至应该工作吗?

我会赞成每一个答案。先感谢您。

编辑正确的登录名和密码为admin / admin。

因此,如果用户编写admin / admin,它将返回true

1 个答案:

答案 0 :(得分:0)

我建议你看看TOH-Http它是一个很好的教程!

是的,因为您只是要求提供网址,因此您不需要使用帖子。发布是指您根据请求发送正文时。

正如我们在评论中所讨论的,这是一个有效的解决方案:

this.http.get('http://localhost/api/auth/${this.username}/${this.password}') 
    .map(res => res.json())
    .subscribe(d => console.log(d))

我建议您在服务中进行映射(我假设您在服务中执行此请求)并在组件中执行调用此http请求的.subscribe。在您的情况下,由于您只收到falsetrue,因此您可以这样做:

    return this.http.get('http://localhost/api/auth/${this.username}/${this.password}')
        .map((res: Response) => {
            let resp = res.json();
            if (resp == true) {
                return true;
            }
            return false;
        });
       .catch(... 
}

在您的方法中,您可以像这样调用http-request .subscribe

.subscribe(res => {
    if(res == true) {
        // do something...
    } else {
        // do something else...
    }
})

如前所述,将来不要在网址中发送您的用户名和密码! ;)