我正在另一台机器上构建一个具有MVC4单页前端和WebAPI的应用程序,该应用程序将json查询数据直接返回到浏览器.身份验证发生在MVC端,在该端建立了一个用户对象,该对象为当前用户定义了一组“ canDoX”权限.
问题在于,当用户从页面.js接收到请求时,如何在不重新验证和授权用户的情况下基于这些权限来确保对WebAPI操作的访问权限.
就目前而言,用户将必须了解api,但如果这样做,他们可以破解url并通过’/ api / myController / myRestrictedAction / 123’查询所需的任何数据.
有任何想法吗?我应该放弃单页提示,仅从MVC控制器调用webAPI吗?
解决方法:
HTTP是无状态的.您必须对每个请求执行授权和身份验证,对于该页面上的各种资源,每次访问该页面通常会发生多次.
按照您的示例,“ / api / myController / myRestrictedAction / 123”是您要向某人公开的资源.访问该资源的用户是否应该能够访问它取决于您自己.
与其将用户访问随机端点视为“黑客入侵url”,不如说它实际上是应用程序中的错误,它使用户可以请求和访问他不应该访问的内容.