前端权限

前端做权限可以做什么?

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

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.请求和响应的控制
如果⽤户通过⾮常规操作, ⽐如通过浏览器调试⼯具将某些禁⽤的按钮变成启⽤状态, 此时发的请求, 也
应该被前端所拦截
原文地址:https://www.cnblogs.com/javascript9527/p/12830490.html