我在基于角色/权限的PHP“经典”应用程序方面拥有丰富的经验,最近我开始使用React和.NET Core后端开发单页应用程序。我在理解基于声明的访问控制的工作原理时遇到了麻烦,尤其是在考虑javascript客户端时。
根据此帖子(Role-based access control (RBAC) vs. Claims-based access control (CBAC) in ASP.NET MVC),接受的答案描述了声明具有类似权限的作用(例如q=
,CanCreateCustomer
)。从后端看来这是可以理解的,但是我不确定如何将其应用于客户端。
据我所知,声明存储在JWT令牌中,客户端可以根据用户声明对令牌进行解码,并在页面上显示/隐藏元素(例如,客户端将对JWT令牌进行解码,如果{ {1}}声明不可用,该页面上不会显示“创建客户”按钮。
但是,使用这种方法,客户可能会在JWT令牌中存储数百个权限/声明。我看到两个问题:
我正在寻求澄清以上问题,或者我是否正以正确的方式进行处理。也许我误会了基于声明的访问控制的工作原理。