zoukankan      html  css  js  c++  java
  • 前端权限

    前端做权限可以做什么?

     根据不同用户的权限显示不同的菜单栏, 未登录的用户进行拦截,直接跳回首页,根据不同的用户配置不同的路由。

    1 菜单栏的显示,不同用户登录展现不同的菜单栏; 

    在登录请求中, 会得到权限数据, 当然, 这个需要后端返回数据的⽀持. 前端根据权限数据, 展示对应的菜
    单.点击菜单,才能查看相关的界⾯.
     
    菜单栏根据不同的用户显示不同的菜单,前端如何实现?  显示过程如下

     01  用户在登录页,点击登录时,会将当前登录用户的信息(账号密码等)传递给后端, 后端拿到前端传来的数据,进行分析比对,如果登录成功,返回当前用户可以显示的数据

            因为登录用户的信息是多页面共用的,通常会把登录成功后的用户信息存储到vuex 中;如下图就是一个vuex状态管理模块, setMunuList()方法是用来操作state中的menuList的,(因为vue中不提倡直接修改state中的状态,如果想要修改vuex中state的状态,最佳的实践办法就是通过 调用mutation 来修改state中的数据)

           

     02  前端获取到当前用户展示的数据,将数据存储到vuex 中,如下图:  

    当登录成功后,将获取的数据存储到vuex的state中

    this.$tore.commit() 调用mutations中的方法,  第一个参数是: 调用的方法名, 第二个参数是 :传递的数据

    通过调用mutations中的方法将登录成功后的数据赋值给state下的menuList

    存储成功后,在任意页面都可以通过vuex来直接获取登录用户信息的数据

     03  当用户登录成功跳转到首页的时候,从vuex中取值并赋值给首页菜单栏

     04   这样 更具不同用户的权限显示不同的菜单栏 就实现了。

         坑:  页面刷新后vuex数据会消失,导致菜单栏消失

    原因:  刷新页面,vuex会重新加载,但是缺少了登录步骤中的赋值(就是登录成功后,将后端返回的参数通过this.$store.commit()传给vuex的state中), 缺少了这一步,vuex的state就会是空的, 页面重新渲染,从vuex中取出来的值是空的,所以菜单栏就会消失。

    解决页面刷新菜单栏消失的问题: 如下

    解决思路是: 等用户登录成功后,在vuex的mutations中 将数据 存储到  sessionStorage 中(sessionStorage  localStorage cookie 都是前端用来存储数据的,保持会话的)。

    需要注意  向seessionStorage 中存储数据的时候,要用存储 JSON 格式的,   所以存储前要对数据进行JSON转换, 通过 JSON.stringfy() 即可实现;

                    从sessionStroage 中 获取数据数据的时候,获取到的是JSON格式的(因为你存的时候就是JSON 格式的), 我们需要转化为 对象模式的数据, 通过JSON.parse() 既可以实现

     
     
     
     
     
     
     
     
    2界面显示的控制,根据用户的权限去配置相应的路由(动态匹配路由)   ----------------核心: 通过  router.addRoutes() 实现
    如果⽤户没有登录,⼿动在地址栏敲⼊管理界⾯的地址, 则需要跳转到登录界⾯
    如果⽤户已经登录, 可是⼿动敲⼊⾮权限内的地址, 则需要跳转404界⾯
    具体实现步骤如下:
    01 因为我们要做的是 根据权限去动态匹配路由嘛,所以肯定是先从路由文件router.js开始下手
     
     
     
     
     
     
     
     
     
     
     
     
     
    3.按钮的控制
    在某个菜单的界⾯中, 还得根据权限数据, 展示出可进⾏操作的按钮, ⽐如删除,修改,增加
     
    4.请求和响应的控制
    如果⽤户通过⾮常规操作, ⽐如通过浏览器调试⼯具将某些禁⽤的按钮变成启⽤状态, 此时发的请求, 也
    应该被前端所拦截
  • 相关阅读:
    OSX安装nginx和rtmp模块(rtmp直播服务器搭建)
    用runtime来重写Coder和deCode方法 归档解档的时候使用
    Homebrew安装卸载
    Cannot create a new pixel buffer adaptor with an asset writer input that has already started writing'
    OSX下面用ffmpeg抓取桌面以及摄像头推流进行直播
    让nginx支持HLS
    iOS 字典转json字符串
    iOS 七牛多张图片上传
    iOS9UICollectionView自定义布局modifying attributes returned by UICollectionViewFlowLayout without copying them
    Xcode6 iOS7模拟器和Xcode7 iOS8模拟器离线下载
  • 原文地址:https://www.cnblogs.com/javascript9527/p/12830490.html
Copyright © 2011-2022 走看看