前言
此前土豆已经分享过一些若依框架的一些知识点,如果有兴趣的小伙伴可以到我的主页中查找,希望能够为你提供些许帮助。
本次我们来学习和了解若依框架的权限控制这一块的相关知识点,让我们一起看看若依的权限具体是怎么实现,并且怎么使用。
一、权限控制的意义
对于一个健硕的项目来说,权限控制也是必不可少的一部分,因为项目最终是要面向用户开放的,但是项目中并不是所有的功能都会对所有的用户开放。
举个例子,管理员也相当于一家公司的BOSS。如果所有功能面向所有用户,就相当于一家公司中所有人都是BOSS,试想一下,这样的一家公司谁来管理谁,谁来做什么工作,分工不明确一定是会发生问题的。所以不管是在一家公司还是在我们的项目中权限能够规避很多本不该发生的各类问题。每个用户有各自的身份,各自的身份有各自的权限,各自的权限能做各不相同的事情,每个用户做好自己分内的事情,才能最终保证项目正常运转。
二、权限分类
我们常见的权限类型主要有这么几种:
1、网络权限(了解)
网络权限在我们身边也是很常见的,知识我们平时没有注意到的一个点,举个例子就是。当我们访问某个网站的时候,打开浏览器显示禁止访问,这并不是说这个网站不存在,也不能说这个网站不能访问,而是说我们访问这个网站的行为是不被允许的,或许是这个网站是非法的,或者识别的什么原因。
再或者你在访问某个互联网网站的时候,没有连接网络,这个时候你访问互联网上的某个网站的时候会显示无法访问,同样的也不是这个网站不存在,也不能说这个网站不能访问,而是说我们访问这个网站的行为是不被允许的,因为我们没有满足连接网络的这个条件。
相似的例子还有局域网等等案例。
一切禁止不能被访问的原因就是我们没有某些权限,换句话说我们没有满足某些条件。
网络权限这块不是我们本次重点讨论的内容,如果有感兴趣的小伙伴可以自行查阅资料学习,在这里土豆就不赘述了。
2、登陆权限
没错,登录也是权限的一种。权限控制不仅仅是对现有用户,也就是对使用账号的用户做权限控制。而是所有人,对,没错,是所有人。因为对于所有人来说,或许有访问我们项目的能力,但是他目前可能还不是我们的用户,但是并不意味着他之前不是我们的用户,亦或者说他未来可能是我们的用户。同样用公司举例,所有人都可以知道腾讯的总部在哪,也可以去到腾讯总部所在的位置,但是能不能进入腾讯总部,要取决于你现在的权限能不能进。哪怕你将来是腾讯的员工,或者你以前是腾讯的员工,只要你现在不是,就不让你进。除非你有特殊理由或者权限。
当然登录这款的相关知识此前土豆已经分享过了,有兴趣的小伙伴可以点击查看。
3、用户权限
用户去权限就是说当前你是我们项目的用户,你能够做什么事情,能看哪些数据。这也是我们今天要重点学习的地方。
若依为我们集成了我们平时开发时常见的权限涉及到的场景,总的来说分为两个部分,一个是页面的访问权限,也就是菜单权限。另一部分是我们进入页面之后访问后端接口的权限。
这两部分权限通常会搭配使用。单独使用的话有时候会有一点影响用户体验。
好比说用户进入到了某个页面,但是在进入页面之后被提示没有权限。
在或者说用户可以访问后端的某个接口,但是访问这个接口的页面却无法访问,难道是让用户去使用接口擦拭工具访问吗?
这种场景不至于离谱,但总是不太舒服。有没有?
三、权限实现
1.接口访问权限
接口访问权限在实际的开发中这是非常必要的。
若该接口的功能是查询功能接口,有没有一种可能接口返回的数据是不对外公开的加密数据?
若该接口的功能是修改相关的功能接口,有没有可能被恶意访问导致数据损失?
这个时候可能有小伙伴可能会说我们在前端页面做了登录功能啊。不错,我们是做了登录功能,但是别忘了接口并不是只有在页面上才能被调用,没有页面我们使用接口测试工具依旧能够调用。如果我们不对接口的访问做权限校验,那么登录功能岂不是有些自欺欺人?
因此我们的接口访问权限通常是和登录功能密不可分的。大家记不记得在此之前用户登录的知识点分享的时候市什么流程呢?
在我们完成登录后是不是有一个返回值叫做token?没错,就是token,这就是关键。
我们在登录成功之后会将token以及相关信息存在redis中发方面后续使用