单页应用程序或客户端应用程序中的授权

10

我一直在尝试寻找有关如何处理 SPA 应用程序中授权(而不是认证)的最佳实践。

假设我有一个带有 api 后端的客户端 MVC(angular、vuejs 等),我们如何管理应用程序的授权?

例如,用户和管理员都可以访问,但其中一个人具有更多的权限(视图中的功能)。如果他们都在客户端使用相同的 UI,如何保护并呈现适合其权限的正确视图?有一个选项是获取他们的角色/声明列表,并基于此确定在客户端上呈现什么,但由于这是基于 JS 的,因此很容易被规避。

对我来说,客户端 mvc 应用程序可能不是正确的解决方案,SSR 应用程序更适合此类问题。如果是这种情况,移动设备怎么办?如何解决手机上的同样问题,而无需开发实际的本机应用程序?


2
另一个问题是,如果您创建了一个客户端应用程序,最好的跟踪授权规则的方法是什么?您是一次性获取所有规则并将其保存在本地,还是每个规则都进行API调用检查?从安全和效率角度来看,有哪些最佳实践? - mghz
这是个好问题。你是怎么着手解决的?你有一个合理的方法吗? - Christian Fazzini
1个回答

2
这是一个非常好的问题,我也一直想知道为什么没有人回答它。我读了一些关于此的文章和教程,在所有这些资料中他们都提出了与您所提到的相同的建议:
“获取他们角色/声明的列表,并基于此确定在客户端上渲染什么内容。”
正如您所提及的,这种方法可以被“规避”,但我认为由于“授权也将在服务器端完成”,因此无论用户如何篡改前端JS(例如使用浏览器的开发工具),他/她无法通过授权保护 。例如,他们可能能够为所有评论添加删除按钮(除了自己的评论),但是当他们点击其他用户评论上的删除按钮时,“服务器将不会授权删除操作”,因为存在服务器端授权。因此,您提到的方法似乎是合法的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接