Javascript 创建基于权限的系统
我想创建一个系统,其中可能有4-5种类型的用户组可以访问某些东西。权限越高,他们可以做的事情就越多。这对我来说很简单,但对我来说困难的部分是创建一个系统,在这个系统中,上级可以做下级可以做的任何事情,而下级不能做上级可以做的事情 我是这样想的:Javascript 创建基于权限的系统,javascript,node.js,permissions,Javascript,Node.js,Permissions,我想创建一个系统,其中可能有4-5种类型的用户组可以访问某些东西。权限越高,他们可以做的事情就越多。这对我来说很简单,但对我来说困难的部分是创建一个系统,在这个系统中,上级可以做下级可以做的任何事情,而下级不能做上级可以做的事情 我是这样想的: if (user.group === "mod" || user.group === "admin"){ // do stuff if (user.group === "admin"){ // do stuff } } 不过,似乎
if (user.group === "mod" || user.group === "admin"){
// do stuff
if (user.group === "admin"){
// do stuff
}
}
不过,似乎有一种更简单的方法。为什么不试试switch语句呢
switch(user.group) {
case 'admin':
// admin permissions
case 'mod':
// admin permission (waterfall effect)
// mod permission
case 'user':
// admin permission (waterfall effect)
// mod permission (waterfall effect)
// user permissions
default:
// default permissions;
break;
}
我不明白这为什么不起作用
基本上,通过不向每个开关添加
break
,管理员案例也会触发一个mod案例和一个用户案例,默认情况下,mod案例也会触发一个用户案例等。您可以引入一组权限,如PERMISSION\u to\u DO\u THING1
,等等。接下来是角色,如ROLE\u ADMIN
,ROLE\u SPECIAL\u GUY
,等等。每个角色都是一组权限。请注意,较高的角色包含较低角色可以执行的所有必要权限。这是合乎逻辑的事情,这取决于你的应用程序和实现。无论如何,最后你需要一些方法,比如userhaspowmission(user,permission)
,如果它为真的话
,他可以做一些事情
if (userHasPermission(user, PERMISSION_TO_ADD_USER)) {
// do things
}
if (userHasPermission(user, PERMISSION_TO_DELETE_USER)) {
// do things
}
您是否考虑过使用细粒度权限?这样,您就可以检查用户是否可以执行某些操作(例如,删除博客评论——可以设置为博客所有者删除他们自己博客上的评论,或者管理员可以删除所有博客上的博客评论)?如果没有分配user.group,您将如何使其不中断?不会。这就是为什么会出现
default
情况的原因。