我在另一台机器上构建一个带有 MVC4 单页前端和 WebAPI 的应用程序,该应用程序将 json 查询数据直接返回给浏览器。身份验证发生在 MVC 端,其中构建了一个用户对象,为当前用户定义了一组“canDoX”权限。
问题是我如何根据这些权限保护对 WebAPI 操作的访问,而无需在用户收到来自页面 .js 的请求时重新验证和授权用户。
就目前而言,用户必须知道 api,但如果他们知道,他们可以破解 url 并通过 '/api/myController/myRestrictedAction/123'
查询他们想要的任何数据
有什么想法吗?我是否应该放弃单页的想法,只从 MVC Controller 调用 webAPI?
最佳答案
HTTP 是无状态的。您必须对每个请求执行授权和身份验证,并且每次访问该页面上的各种资源时,这通常会发生多次。
根据您的示例,'/api/myController/myRestrictedAction/123'
是您向某人公开的资源。访问该资源的用户是否应该能够访问它由您决定。
不要将用户访问随机端点视为“破解 URL”,这实际上是您应用程序中的一个错误,允许用户请求和访问他不应该访问的内容。
关于c# - 如何使用单页保护 Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325047/