自从有了前后端分离,前端的工作内容就变得越发多起来,其中有一项就是权限控制,下面就谈一谈前端权限。
WHAT
首先我们要理清前端权限是什么,我理解的前端权限就是控制前端元素是否可见。因为之前后台模板时代,我们的页面都是通过后台来渲染的,能不能访问到页面直接由后台逻辑判断就好。但是现在我们到了前后端分离时代,所有页面的元素都由页面本身来控制,所以页面路由这块需要由前端本身来控制了。所以我认为前端权限有这几个关键点:
前端权限是基于前后端分离之上的
前端只能做视觉上的控制
权限控制不能放在前端,后台还是需要对每一个接口做验权
WHY
下面我们说一说为什么说前端只能做视觉上的控制和权限控制不能放在前端,后台还是需要对每一个接口做验权。我觉得其实WEB本身就是围绕数据来的,所以我们前端安全,主要是保护我们的数据,那和数据最紧密接触的其实还是后台,前端本身做得是数据的展示和收集,但是数据的存储和处理并不是由前端来做。所以即使前端能控制住路由/按钮等不被别人看到,发送请求的方式还是有很多,完全可以绕过前端来请求数据。所以从某种意义上来说,就算前端的权限控制做得再严密,可能作用也是有限的。这也引申了后面一句,后台还是要对每一个接口做验权。
HOW
但是前端做权限控制还是非常有意义的,我觉得在安全性方面来说,前端就显示人体的皮肤,我们会是WEB安全的第一道防线。前端要做的工作,我认为有三种:
前端路由展示
前端按钮级别展示
调用接口与后台配合
首先,我们所以说前端路由展示。这里其实可以分为两种方式来做路由权限控制:
前端保存所有路由,通过请求获取权限列表,然后由前端筛选出来可访问路由进行展示
前端仅保存文件关系,由后台根据user信息生成路由,通过请求传递到前端渲染
第一种方法比较方便,后一种更灵活,比如我们的页面需要通过后台配置访问,就可以通过第二种方法来实现。
按钮级别的展示(vue示例)
先通过请求获取到按钮级别的权限列表
封装一个公用的筛选方法,再通过v-if调用该方法确定是否渲染 OR 封装一个指令(directive)来控制按钮是否渲染
调用接口与后台配合
其实我们最主要的与后台沟通的方式还是通过调用接口,与后台进行数据交流,但是如上所说,后台还是需要对每一个接口进行鉴权。前后端配合主要有以下几种方式:
HTTP Basic Authentication已上几种方法,大家可以很轻松google到相关信息,本篇就不赘述了。
session-Cookie 常用
Token-Cookie 常用
OAuth(开放授权) -- QQ授权登陆常用
By. 北落师门
来自:https://segmentfault.com/a/1190000018436192
在一个项目中,一些功能会涉及到重要的数据管理,为了确保数据的安全,我们会在项目中加入权限来限制每个用户的操作。作为前端,我们要做的是配合后端给到的权限数据,做页面上的各种各样的限制。
页面权限控制是什么意思呢?就是一个网站有不同的角色,比如管理员和普通用户,要求不同的角色能访问的页面是不一样的。如果一个页面,有角色越权访问,这时就得做出限制了。
鉴权:是指验证用户是否拥有访问系统的权利。传统的鉴权是通过密码来验证的。这种方式的前提是,每个获得密码的用户都已经被授权。在建立用户时,就为此用户分配一个密码
前端权限控制一直是前端必须掌握的一个知识点,一般来说稍微正规一点的后台系统肯定有权限控制。当然还是那句老话,前端本来就是不安全的,真正的安全还是需要后端兄弟去把关,所以后端也必须按做权限控制!
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!