权限管理


GoAdmin已经内置了RBAC权限控制模块。以超级管理员身份进入主页后,展开左侧边栏的管理,下面有用户、角色、权限三项的管理面板:

rbac

权限说明

权限管理是针对路由和方法进行限制,路由可以 使用golang的正则匹配。只要方法和路由能对应上,则权限验证通过。因此需要自己对各个路由和方法进行配置,从而自己决定权限设置的粒度。

关于某个表格的管理,假设表格名为users,相应的系统增删改查路由如下:

权限 路由 方法
列表页面 /info/users GET
所有记录编辑页面 /info/users/edit GET
指定记录编辑页面 /info/users/edit?id=2 GET
所有记录编辑操作 /edit/users POST
指定记录编辑操作 /edit/users?id=2 POST
新增页面 /info/users/new GET
新建操作 /new/users POST
导出操作 /export/users POST
所有权限 * (留空)

注意1:路由的匹配规则说明

可以看到上表中有id=2的参数,系统规定,路由中可带路由参数,只要待验证的路由中带有该参数且值匹配得上,则通过验证。而系统规定的主键参数,__goadmin_edit_pk__goadmin_detail_pk__goadmin_detail_pk,均可以用id来代替,比如:

待验证路由:/info/users/edit?__page=1&__pageSize=10&__sort=id&__sort_type=desc&__goadmin_edit_pk=3632 路由规则:/info/users/edit?id=3632 验证结果:通过

同时,如果是POST方法,需要对表单参数进行限制的话,同样也可以将该参数写在路由规则上,系统会判断是否在请求表单中带有该参数,如有的话,则认为权限验证正确。

注意2:设置了权限并不意味着就可以登录或左侧菜单就可以看到了

设置了权限,登录不成功或如果需要左侧菜单显示出来,你还需要在菜单编辑页面中设置 对应的角色

注意3:权限设置的高于在菜单配置的角色

也就是说,假设菜单1,对应的角色是operator,而拥有所有权限的用户依然可以访问菜单1。

注意4:UI组件的显示跟权限相关

也就是说,如果你没有编辑的权限,则你将看不到编辑的按钮。