利用,但不公开API(AngularJs / NodeJs)

我有一个使用API​​的AngularJs应用程序。 我用StrongLoop制作了这个API

我想要的是:

  1. 能够通过AngularJs控制器使用API​​。
  2. 不公开API端点给用户。

现在我想我会以某种方式能够与Node做到这一点,在那里我用AngularJS查询本地站点的URL,并且让Node处理路由和身份validation令牌,但是阻止用户使用我的本地URL来获取结果?

我希望我的网站使用API​​,但如果用户自己导航,则不会向用户提供结果

在HTTP层面上,这两者之间没有任何区别。

现在您可以实施一个身份validation和授权系统。 身份validation标识客户端/用户,授权决定给定的用户是否可以执行给定的操作。

要实现上述,请参阅StrongLoop的身份validation,授权和权限

公共API

如果AngularJS控制器(一个Web客户端)可以访问API,只要假设用户可以通过“将API URL放在浏览器中”来访问它。 这是没有办法的,都是你的API有效的客户端。

如果你需要pipe理权限,不要依赖客户端来阻止用户这样做,而是依赖于服务器端。

在客户端的权限只是为了良好的用户体验(用户体验,例如隐藏button到用户不允许执行的操作)。

API本身不信任任何客户端。

内部API

一旦你保证了你的公共API,你可能有一些内部的API,它们只会监听来自你的node.js应用程序的请求来提供一个特定的服务,例如

 public clients (ng-app, web browser) ---> public API (node.js) ----> internal API 

在这里,您可能会让内部API完全信任您的node.js应用程序的请求,因为公共API已经处理权限,只能用安全操作调用内部API。

我想我们需要更多的信息来确定你想限制访问的内容。

如果您只想将API中公开的数据限制为应用程序中需要的数据,那么MVVM模式可能是一个很好的候选者(我不太了解StrongLoop知道这是否是一个选项)。

否则,如果您需要严格限制对StrongLoop API的访问权限,那么只有您的服务器可以访问它,那么Repository Pattern将是一个很好的select。