c# - 如何使用单页保护 Web API

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

我在另一台机器上构建一个带有 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/

相关文章:

c# - 如何让 Task.Delay 提前完成

c# - Web API 路由以捕获丢失的 Controller

c# - 如何更改项目的 .sln 文件的位置?

asp.net-mvc - 如何在 Entity Framework 中为GUID设置NewId()

c# - 从类中重定向到 Action 的正确方法?

c# - 网络 API 错误 : "No HTTP resource was found that matches the request URI"

jquery - 如何在 ASP.NET MVC 4 和 jquery 中使用 Web api 下载文件

c# - 组内组 linq

c# - 如何使用 razor 在 html 中迭代列表变量

web-services - 有没有办法检测从哪个源调用 API?