我认为我们面临的问题没有解决办法,但是为了确认我想在这里问。
我们使用的REST API来自:
由于管理/客户网站的请求是由AngularJS在客户端进行的,因此用户可以确定(例如通过FireBug)资源URL并能够从他们自己的应用程序中消耗所有这些资源 - 我们不想要的我们不能限制它,例如使用IP地址,因为请求来自客户端。我们想为客户/管理网站提供一些资源,为自己的REST API客户端提供一些资源,为两者提供一些资源,但是根据AngularJS的JS请求原则(和资源URL可见性),它无法完成( ?)。
这个问题的最佳做法是什么?
答案 0 :(得分:1)
注意:您的REST资源应始终是安全的。你永远不应该依赖任何客户端的JavaScript代码。如果您的安全性被破坏,因为某人知道 REST api的URI;某事非常错误。
Angular可以模块化,这样客户只能看到客户模块,管理员才能看到客户和管理员模块。通过这种方式,您可以让管理员在WYSIWYG环境中进行游戏,而无需在网站之间来回切换。
// Customers.js
// Module only containing customer code
angular.module('myCustomerProducts', ['myMainApp']);
// Administrators.js
// Module only containing administrator code
angular.module('myEditCustomerProducts', ['myCustomerProducts', 'myMainApp']);
由于您的网站已经为管理员和客户分开,因此您只需包含和部署指定目标网站的JavaScript代码即可。如果不是这种情况,您将需要一些服务器端转换(例如,ASP.NET,PHP,Jade,...),以根据用户的凭据动态构建index.html。 根据托管平台,当您从管理员网站(区域)请求任何内容时,您也可以拒绝访问不在管理员组中的所有人。
但又一次;服务器端安全性更有价值。您无法使用javascript(在客户端)保护不安全的服务器。