文章目录

  • 前言
  • 一、面试中的小坑
  • 二、什么是RBAC权限模型
  • 1.RBAC的基本了解
  • 2.RBAC的组成
  • 3.RBAC的三大原则
  • 总结



前言

最近也是快到了毕业季,相信很多小伙伴们和我一样,即将走出校园,出去到外面实习工作,最近我也是去面试了一家公司,接下来就说说里面的小坑,虽然没有过,但是希望可以帮助到有需要的小伙伴。

一、面试中的小坑

首先遇到的一个坑是问到做过什么项目,设计了什么数据库,我当时写的一个小项目里面有十多个数据表,但是当面试官提问时只问了我根据rbac权限模型设计的数据表,我就只回答了只按照RBAC设计的5个数据表,乍一看没啥问题,但是后来一想,感觉血亏啊,自己明明是设计了十多个表,里面还包括了cron定时任务的表,但是完全没体现的出来啊,也许有人觉得回答这么多是多余的,但是我觉得会比一问一答强多了,毕竟都问到数据库设计方面了,咱把自己的实力全展示出来不是更好吗,话又说回来了,RBAC是个啥东西呢,估计有些刚学权限控制的人可能不大清楚,接下来咱就来看看什么是RBAC。

二、什么是RBAC权限模型

1.RBAC的基本了解

首先,RBAC把权限授权抽象的认为成,“”可以对“什么资源”进行“怎么样”的操作,当其都符合,即为“true”时,这个“”就可以对“什么资源”进行“怎么样”的操作了,例如:图书管理员可以对书籍进行上架操作。

2.RBAC的组成

RBAC的组成是由:用户(user)-角色(role)-权限(permission)这三个主要的部分组成的,其中:
用户(user):每一个用户都可以拥有不同的角色,并且这些用户都是唯一的。
角色(role):每一个角色都对应着多种权限,这些角色的权限可以重复。
权限(permission):这是分得最细的部分,因为本人是和SpringSecurty一起使用的,所以很多权限要细分到方法级别,例如:管理员导出用户的信息、管理员对用违禁商品进行下架等接口。

下面我画了一张图来表示它们之间的关系:

java面试官问工作中遇到的最大困难 java面试项目中遇到的困难_java面试官问工作中遇到的最大困难


再补一张本人做的项目里的部分用例模型图:

java面试官问工作中遇到的最大困难 java面试项目中遇到的困难_java面试官问工作中遇到的最大困难_02


由于系统管理员和买家、卖家这几个角色的权限不一样,所以操作的他们的

”可以对“什么资源”进行“怎么样”的操作也不一样。

3.RBAC的三大原则

RBAC权限的三大原则:
1.最小权限原则:最小权限原则指的是分配给用户的权限集合是刚好够该角色的用户执行对应的操作的
2.责任分离原则:指的是在执行一些敏感的任务时,需要设置两个互相独立并且互相约束的角色
3.数据抽象原则:指的是可以将一些权限给抽象化,例如:A向B去借钱,但是A却没有一个明确“借”的权限,但是A的信用很好,从而可以将A的信用抽象为一个“借”的权限


总结

以上就是我个人对面试的一些小坑和RBAC的理解了,如果哪里有错误,还请大家指正,如果有兴趣的小伙伴,可以去看看RBAC的三个模型,可以收获更多,我会把这当学习空间发,有兴趣的小伙伴可以一起交流学习,下次可能会总结一期mysql的索引或者是我对map的理解吧。