2014-08-31 60 views
0

我是Angular和Node.js的新手,所以这个问题可能很基础。我在https://github.com/btford/angular-express-blog处为我的angular-express项目使用种子,如果您查看控制器文件:https://github.com/btford/angular-express-blog/blob/master/public/js/controllers.js,几乎所有的视图都使用$ location.url或$ location.path加载,我知道它是等效的一个window.location js调用(没有数据作为调用的一部分传递)。Angular JS - Express - 将数据从一个控制器传递到另一个控制器 - 安全和最佳实践

比方说,我有一个从API返回的JSON对象,我想将这些信息传递给下一页(控制器),服务是最好的方式吗?这对我来说听起来很不自然,因为它只是我想传递给对象的瞬态数据,而不是服务。有人可以帮我在这里的最佳做法?

此外,如果所有这些渲染都在客户端处理,我如何保护我的应用程序?例如,如果我的管理视图只显示给具有特殊权限的用户,那么如果所有逻辑位于客户端,我怎么能够阻止某人呈现该视图?我知道在服务器端可以防止这些操作,但是完全防止这种情况怎么样?

+0

我知道像ASP.Net框架MVC,我们可以通过在视图控制器上添加授权属性来保护视图。类似的东西也应该在快递中。 – Chandermani 2014-08-31 07:04:39

+0

看看这个安全http://jonsamwell.com/url-route-authorization-and-security-in-angular/ – Jon 2014-08-31 07:19:51

+1

看到这个anwser http://stackoverflow.com/questions/18325324/angularjs-authentication- restful-api/25093091#25093091 – Jon 2014-08-31 07:20:43

回答

0

你也可能想看看路线结算时,它可以让你注入承诺到控制器的结果,并确保承诺解决加载页面/控制器之前

+0

解决方法很有趣,但我不确定如何在我的上下文中使用它们。我了解如何使页面加载依赖于来自不同服务的数据的可用性,但是如何从另一个控制器获取先决条件数据?你能帮助扩大吗? – user1452030 2014-09-02 04:55:27

+0

更清楚的是,你说我必须定义一个服务,它存储来自控制器1的状态,并且该状态变量或方法应该被引用为第二个控制器的路由解析器,以便我访问变量?虽然听起来可行,但这不是太复杂吗?我们是否有传统的“数据传输对象”,或者是否是Angular的DTO? – user1452030 2014-09-02 05:01:30

+0

准确地说,基本上,建立一个返回包含数据的承诺的工厂,使用该工厂作为两个/所有控制器的解决方案。所有解决方案返回承诺将被注入控制器时自动解包。它并不像听起来那么复杂,而且这种方法确实可以/应该用于所有远程资源,因为它将减少代码重复并允许您构建通用的API来与这些资源进行交互。 – yelvert 2014-09-02 05:10:18

相关问题