Appearance
如何实现高性能的前端权限管理
应用场景: 如何限制不同用户的模块可访问性
通常,在判断权限时,我们会使用字典或者数组来判断一个用户是否有访问某个模块的权限
js
const MA = 'MA', MB = 'MB', MC = 'MC'
/** SA拥有MA和MB的访问权限 */
const SA = [MA, MB]
const canSAFetchMC = SA.includes(MC) //false
const canSAFetchMB = SA.includes(MB) //true
考虑到性能和可读性的问题,我们可以使用位运算符进行优化
js
const MA = 1, MB = 1 << 1, MC = 1 << 2
const SA = MA | MB
const canSAFetchMC = SA & MC //== false
const canSAFetchMB = SA & MB //== true