说之前,先给下演示地址: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画的,,表之间的关系没法用"鱼尾纹"画出来。大家就简单的看一下把,勿喷。
看图我们就可得知:用户与角色是多对多的。。角色与权限也是多对多的。。