基于rbac设计的权限管理系统

说之前,先给下演示地址:http://116.196.66.248:8090/  账号:admin 密码:123456

如果需要源码可以去我的github上下载:https://github.com/kingrocy/rbac

项目使用的是springboot技术,使用html+rest风格接口进行数据展示与交互,ui使用的是layui。

rbac全称 Role-Based Access Control,即基于角色的权限访问控制。。简单来说,就是用户通过角色来与权限实现关联,进而实现对用户进行权限的控制。

目前,随着前后端分离的火热,越来越多的项目已经由JSP转到了html+rest接口了。。这样一来,,权限的控制不仅仅只是我们后台,前端工程师也需要进行权限的控制。

那么前端工程师应该使用怎样的一种方法来进行权限校验呢???

比较传统的一种做法就是:当用户登陆时,如果用户登陆成功,则将用户的权限查找出来,将其权限对应的url封装成一个字符串传递给前端。。前端接收此字符串并存储。。有了这个字符串,前端工程师就可以根据用户的权限是否包含某个模块或某个功能的url。如果包含,则加载。反之,则不加载。。。

这种做法比较方便,,仅仅需要前后端工程师约定一下每个模块、每个功能的url即可。

如果你的项目是使用很规范的rest接口的话,那么这样的url是不能够作为权限对应的url的。因为这种url是有重复的。

一般的rest风格的接口如下:

  • 查询用户列表 /user  请求方式:GET
  • 新增用户/user 请求方式:POST
  • 修改用户/user 请求方式:PUT
  • 删除用户 /user/{id} 请求方式 DELETE
  • 查询用户详情 /user/{id} 请求方式 GET

有上面的rest接口可知,我们可知:新增、修改、列表查询的url都是/user,这种有重复的url不能够满足我们的需求。

所以我们需要给url后面加上一个此url对应的请求方式,这样一来,就能够唯一确认这个url只对应一个功能。

加上url对应的请求方式之后,权限对应的url字符串可以为下:

  • 查询用户列表 /user-get
  • 新增用户/user-post
  • 修改用户/user-put
  • 删除用户 /user/{id}-delete
  • 查询用户详情 /user/{id}-get
对功能进行一些合并 将新增、修改合并,移除查询用户详情的权限。默认有新增修改的权限就有查询用户详情的权限。。

然后权限对应的url变成下面:

  • 查询用户列表 /user-get
  • 新增修改/user-post
  • 删除用户 /user/{id}-delete
一般来说,增删改查使用三个权限即可概括。。

现在,介绍一下后台的数据库表:


上面的图用navicat画的,,表之间的关系没法用"鱼尾纹"画出来。大家就简单的看一下把,勿喷。

看图我们就可得知:用户与角色是多对多的。。角色与权限也是多对多的。。



猜你喜欢

转载自blog.csdn.net/qq_29992111/article/details/79087250