我有一个消耗API的AngularJs应用程序。我用StrongLoop
我想要的是什么:
现在我想我会以某种方式使用Node来实现这一点,我使用AngularJS查询本地站点URL并让Node处理路由和身份验证令牌,但是什么阻止用户使用我的本地URL获取结果?
答案 0 :(得分:4)
我希望我的网站使用API,但如果用户自己导航,则不会向用户提供结果
在HTTP级别上就是这样,,两者之间没有区别。
现在您可以实施一个身份验证和授权系统。身份验证标识客户端/用户,授权决定给定用户是否可以执行给定操作。
要实现上述目标,请参阅StrongLoop的Authentication, authorization, and permissions
如果AngularJS控制器(Web客户端)可以访问API,则假设用户可以通过“将API URL放在浏览器中”来访问它。没有办法解决这个问题,两者都是API的有效客户。
如果您需要管理权限,请不要依赖客户端来阻止用户这样做,而是依赖服务器端。
客户端的权限仅适用于良好的用户体验(用户体验,例如隐藏按钮以禁止用户执行操作)。
API本身不信任任何客户。
保护公共API后,您可能拥有内部API,只能侦听来自node.js应用程序的请求,以提供特定服务,例如
public clients (ng-app, web browser) ---> public API (node.js) ----> internal API
在这里,您可能有内部API完全信任请求来自您的node.js应用程序,因为公共API已经处理了权限,只能通过安全操作调用内部API。
答案 1 :(得分:0)
我认为我们需要更多信息来确定您正在尝试限制访问的内容。
如果您只想将API中公开的数据限制为应用程序所需的数据,MVVM pattern可能是一个很好的候选者(我对StrongLoop不太熟悉,知道这是否是一个选项。)< / p>
否则,如果您需要严格限制对StrongLoop API的访问权限,以便只有您的服务器可以访问它,那么Repository Pattern将是一个很好的选择。