【发布时间】:2018-03-31 00:59:55
【问题描述】:
我的 Node.js API 中有一些路由将数据从 MongoDB 数据库发送到 Angular 4 前端。
例子:
Node.js 路由:
router.get('/api/articles', (req, res) => {
Article.find({}, (err, articles) => {
if(err) return res.status(500).send("Something went wrong");
res.status(200).send(articles);
});
});
Angular 4 服务功能:
getArticles() {
return this.http.get('http://localhost:3000/api/articles')
.map(res => res.json()).subscribe(res => this.articles = res);
}
问题是,如何保护我的 Node.js API 路由免受浏览器访问?当我去http://localhost:3000/api/articles时,我可以看到我所有的json格式的文章。
【问题讨论】:
-
你真的不能。如果您要公开一个 API 以供 Angular 使用,那么任何 Web 代理也可以调用该 API。您可以在您的网站上要求一个登录帐户,您的服务器可以在 API 响应之前验证该帐户,但这就是您可以做的事情。可以设置各种障碍,使其更难从您的 Angular 代码外部访问,但与坚定的黑客相比,没有一个是安全的。
-
@jfriend00 谢谢,非常感谢您的 cmets。我的目标只是防止通过浏览器直接访问公共 API 路由。我在需要用户身份验证的地方使用令牌。
标签: javascript node.js mongodb angular