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

mgh*_*ghz 8 authorization role-base-authorization single-page-application

因此,我一直在努力寻找有关如何在SPA应用中解决授权而非身份验证的最佳实践.

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

例如,用户和管理员都可以访问,但是一个人具有比另一个更多的访问权限(视图中的功能).如果他们在客户端使用相同的UI,您如何根据访问权限保护和呈现正确的视图?可以选择获取他们的角色/声明列表,并根据它确定在客户端呈现的内容,但由于这是基于JS,因此可以轻松规避.

对我来说,客户端mvc应用程序可能不是正确的解决方案,SSR应用程序更适合这一点.如果是这样的话,移动案例怎么样?如何在不开发实际原生应用的情况下为移动设备解决同样的问题?

gan*_*alf 2

这是一个很好的问题,也是我思考了很长时间的问题。我不知道为什么没有人回答这个问题。我读了一些关于此的文章和教程,在所有这些文章和教程中,他们都提出了您提到的相同内容:

“获取他们的角色/声明的列表,并据此确定要在客户端呈现的内容”

正如你也提到的,它是可以规避的,但我认为因为,授权也会在服务器端完成,那么无论用户如何篡改前端JS(例如通过使用浏览器的开发工具),他/她无法通过授权警卫。例如,他们可能能够为所有评论(除了他们自己的评论)添加删除按钮,但在他们单击其他用户评论上的删除按钮之后。服务器不会授权删除操作,因为服务器端授权。所以看来你提到的方法是合法的。