我刚刚安装了 MEAN 堆栈(MongoDB、Express.js、AngularJS、Node.js)并打开了示例程序(在 mean.io 上找到),他们有一个基本的应用程序,您可以登录并创建博客“文章”仅用于测试等。
无论如何,我删除了“#!”从 URL 输出整个用户和文章模型,因为它们在数据库中。它看起来好像这样做使它停止通过 Angular 进行路由,而是使用只是 JSON REST api 的 Express 路由。这是 MEAN 堆栈包、Angular 作为一个整体的缺陷,还是仅仅是开发环境设置的缺陷?我无法想象它会以这样一个巨大的缺陷发布,但也许我只是遗漏了一些东西..
可复制的步骤:
- 按照 http://mean.io 上的安装说明进行操作
- 在浏览器中转到您的本地应用程序并创建一个帐户并登录
- 写一篇文章
- 查看您刚刚创建的文章项并从 URL 中删除 #!/,然后您会看到您登录的用户帐户的 JSON 对象 完成散列密码和盐,以及文章 对象。
最佳答案
它只是一个应用程序配置。如果您将 routes.js 更改为:
app.get('/articles', articles.all);
到
app.get('/articles', auth.requiresLogin, articles.all);
然后,如果您尝试直接点击 url/articles,您会收到消息:
“用户未被授权”
而不是 JSON 列出所有文章。
关于javascript - Angular/MEAN.io 中的路由安全漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19075443/