登录我的应用程序的用户从服务器自动化。它的工作原理如下:
用户将登录名和密码写入单独的输入
当他点击登录按钮时,会在地址上发送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
。
答案 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
。在您的情况下,由于您只收到false
或true
,因此您可以这样做:
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...
}
})
如前所述,将来不要在网址中发送您的用户名和密码! ;)