繁体   English   中英

为指定的客户端提供一些REST API资源

[英]Offer some REST API resources for specified clients

我认为我们没有解决问题的方法,但是为了确认我想在这里问您。

我们有REST API,它用于:

  • 管理网站(AngularJS)
  • 客户网站(AngularJS)
  • 其他REST API客户端(自己的API应用程序)

由于来自管理/客户网站的请求是由AngularJS在客户端发出的,因此用户能够(例如通过FireBug)确定资源URL,并能够从自己的应用程序中使用所有这些资源-我们不希望这样做,而我们不能用IP地址来限制它,因为请求来自客户端。 我们只想为客户/管理网站提供一些资源,为自己的REST API客户端提供一些资源,为这两者提供一些资源,但是根据AngularJS发出的JS请求的原理(以及资源​​URL可见性),它是不可能做到的( ?)。

此问题的最佳做法是什么?

注意:您的REST资源应始终安全。 您永远不应依赖任何客户端javascript代码。 如果由于有人知道 REST API的URI而破坏了安全性; 出事

可以将Angular模块化,客户只能看到客户模块,而管理员可以看到客户和管理员模块。 这样,您可以让管理员在所见即所得的环境中工作,而无需他们在网站之间来回切换。

// 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(在客户端)保护不安全的服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM