PanJiaChen / vue-element-admin

:tada: A magical vue admin https://panjiachen.github.io/vue-element-admin
MIT License
87.6k stars 30.43k forks source link

假设我一个账号有多个权限如何判断权限? #3912

Open joker-ssh opened 2 years ago

joker-ssh commented 2 years ago

比如[editor,developer ]存在roles里面,必须满足这两个权限都在才能加入accessRoutes里。那我在permission.js的 hasPermission函数里,把return roles.some(role => route.meta.roles.includes(role))方法换成return roles.every(role => route.meta.roles.includes(role)) 是不是就能解决这个问题了。 求大佬解惑

hobeas commented 2 years ago

不是。 默认的角色判断是“或”的关系,你要改为“且”的关系,应该是

return route.meta.roles.every(role => roles.includes(role))

而下例,用户角色只要是路由角色的子集都成立。 比如某路由设置 [editor,developer],用户只有 [editor] 也能访问

return roles.every(role => route.meta.roles.includes(role))