• 前端面试:权限控制


    0.前言
    记得当年面试的时候,面试官问我,前端怎么做权限控制,咱也不太会这个,只能尴尬回答道:“都是老大搭的架子,我只负责写业务模块代码”。
    如今自己也做了很多项目了,觉得有必有对前端权限控制做一个总结。

    前端权限控制一直是前端必须掌握的一个知识点,一般来说稍微正规一点的后台系统肯定有权限控制。当然还是那句老话,前端本来就是不安全的,真正的安全还是需要后端兄弟去把关,所以后端也必须按做权限控制!我们前端的权限校验主要的目的是过滤不该有的请求和操作,减少服务端压力。

    我个人认为前端权限控制应该分为四个方面,接口权限、按钮权限,页面权限,路由权限,下面就分四个部分探讨下权限控制怎么做

    1.接口权限
    原则
    接口权限最简单,目前一般采用jwt的形式来验证,没有通过的话一般返回401 Authentication Required

    登录完拿到Token,将token存起来(cookie或者ssessionStorage),每次登录的时候头部携带token就行了(axios请求拦截器实现)。

    伪码实现
    const {token} = login()
    cookie.set('token',token)
    axios.interceptors.request.use(config => {
    config.headers['token'] = cookie.get('token')
    return config
    })

    2.按钮权限
    原则
    一个页面会有新增,删除,编辑等等按钮。不同用户应该是有不同操作权限的。
    我们不妨定义权限码 0:不可见 1:不可编辑 2:可编辑
    我们提前和后端约定好按钮的名字,后端会返回一个按钮权限列表。然后我们根据权限列表使用v-if指令或者 绑定disabled属性达到相应权限效果。
    当然更好的最好是自己写一个自定义权限指令,实质就是根据相应权限操作dom

    伪码实现
    比如概览页面的编辑按钮 名字先和后端定义好叫做overview-edit

    // overviwe.vue overview是概览页面的路由名
    ...

  • 相关阅读:
    【Java开发记录】Dnslog访问记录模块实现(六)
    Java 内部类使用
    SQL 万能分页存储过程
    oom排查方法
    vite项目中报错require使用问题
    使用taro和原生开发小程序零散总结
    ECMscript与javaScript在不同平台下的关系
    微信createOffscreenCanvas将两张图合成一张图
    小程序使用taro将两张图合在一起,并保存到相册
    报Error: cannot find module 'XX/package.json'
  • 原文地址:https://www.cnblogs.com/wwyydd/p/14356207.html
Copyright © 2020-2023  润新知