6

我刚刚安装了 MEAN 堆栈(MongoDB、Express.js、AngularJS、Node.js)并打开了示例程序(在 mean.io 上找到),他们有一个基本的应用程序,您可以登录并创建博客“文章”仅用于测试等。

无论如何,我删除了“#!” 从 URL 中输出整个用户和文章模型,就像它们在数据库中一样。似乎这样做会使它停止通过 Angular 进行路由,而是使用只是 JSON REST api 的 Express 路由。这是 MEAN 堆栈包、整个 Angular 中的缺陷,还是只是开发环境设置的缺陷?我无法想象这会以这样的巨大缺陷发布,但也许我只是错过了一些东西..

可复制的步骤:

  • 按照http://mean.io上的安装说明进行操作
  • 在浏览器中转到您的本地应用程序并创建一个帐户并登录
  • 创建文章
  • 查看您刚刚创建的文章项目并从 URL 中删除 #!/,然后您会看到已登录用户帐户的 JSON 对象以及散列密码和盐,以及文章对象。
4

2 回答 2

8

它只是一个应用程序配置。如果您将 routes.js 从以下位置更改:

app.get('/articles', articles.all);

app.get('/articles', auth.requiresLogin, articles.all);

然后,如果您尝试直接点击 url /articles,您会收到以下消息:

“用户未授权”

而不是 JSON 列出所有文章。

于 2013-10-17T03:53:40.023 回答
6

正如你所说,删除 #! 导致路由由服务器处理。然后节点 API 在响应中转储用户对象。

该问题完全独立于 Angular - 该应用程序仅由 Node 在/路由上提供服务。然后 Angular 使用哈希值来显示正确的页面。

这可能只是 MEAN 提供的示例的问题。当他们谈论最佳实践时,应用程序本身是不安全的,这些最佳实践是指代码结构和设置而不是快速演示。

您可以询问他们,因为可能会有人在示例之上构建并且不解决安全问题。

于 2013-09-29T09:44:17.363 回答