如何使用单页保护Web API

时间:2013-05-01 19:31:49

标签: c# asp.net-mvc-4 asp.net-web-api authorization single-page-application

我在另一台机器上构建一个带有MVC4单页前端和WebAPI的应用程序,该机器将json查询数据直接返回给浏览器。验证发生在MVC端,其中构建用户对象,该用户对象定义了一组" canDoX"当前用户的权限。

问题是如何根据这些权限保护对WebAPI操作的访问,而不会在从页面.js收到请求时重新对用户进行重新身份验证和授权。

按照目前的情况,用户必须知道api,但如果他们这样做,他们可以通过'/api/myController/myRestrictedAction/123'

来破解网址并查询他们想要的任何数据

有什么想法吗?我应该废弃单页的想法,只是从MVC控制器调用webAPI吗?

1 个答案:

答案 0 :(得分:3)

HTTP是无状态的。您必须对每个请求执行授权和身份验证,对于该页面上的各种资源,每次页面访问通常会多次访问。

根据您的示例,'/api/myController/myRestrictedAction/123'是您向某人公开的资源。访问该资源的用户是否应该能够访问它由您决定。

不是将用户访问随机端点视为"黑客攻击网址,而是应用程序中的一个错误,它允许用户请求和访问他无法访问的内容。