Per*_*ddy 4 c# rest asp.net-mvc asp.net-mvc-4 asp.net-web-api
我已经创建了一个新的Web Api MVC4项目,并使用API控制器构建了一个RESTful API,然后我使用常规的MVC控制器来使用HMTL5/KnockoutJS/JS渲染视图.
视图通过REST Api与应用程序交互(baseUrl属性指向给定实体的正确REST端点):
this.Post = function (entity) {
return $.ajax(baseUrl, {
type: 'post',
data: ko.toJSON(entity),
contentType: 'application/json',
dataType: 'json'
});
};
Run Code Online (Sandbox Code Playgroud)
现在,我怎样才能使我的应用程序只能使用(或查看)我的RESTful API?
处理为应用程序创建私有内容的最佳方法是始终在网络级别处理它.甚至不要将Web API暴露给外部世界.将它放在DMZ后面并在防火墙上打一个洞,专门面向面向用户的应用程序.然后,没有其他任何东西能够触摸它.
编辑
对不起,我没注意你通过AJAX访问它的事实,所以我建议的技术上不会起作用.但是,如果您只需要少数端点的客户端访问,则此方法仍有一些优点.您可以在应用程序中设置仅将请求代理到专用API端点的操作,然后在面向用户的AJAX应用程序上调用操作,而不是直接调用Web API.
但是,如果客户端需要提供所有内容,则必须公开Web API.此时,身份验证是您唯一的选择,但保护客户端几乎不可能(您必须存储身份验证令牌或方法来验证客户端,以及允许任何想要查看的人在你的代码中模仿你所做的事情).
通常,如果代码是公共的(无需进行身份验证即可使用),那么您只需要公开非原子端点(GET请求和其他实际上不会对您的任何数据进行更改的事物).一旦用户使用面向用户的应用程序进行了身份验证,您就可以公开原子的端点,但它应该仅限于他们应该有权更改的内容.您还应该仅使用其凭据通过Web API进行身份验证,而不是使用应用程序的一些全局凭据集.这样,您可以在Web API级别控制其访问权限,并拒绝更改他们应该无权访问的内容的请求.任何更全局的东西都应该只通过你的web应用程序,代理一个真正的私有Web API,如我的答案中所述.
| 归档时间: |
|
| 查看次数: |
3206 次 |
| 最近记录: |