美文网首页管理后台系统Vue前端开发那些事儿
如何实现后台管理系统中的权限管理?

如何实现后台管理系统中的权限管理?

作者: Grit_1024 | 来源:发表于2021-01-03 14:00 被阅读0次

总体思路:

1.用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token。
2.拿到token之后将这个token存起来,保证刷新页面后能记住用户登录状态,根据token去调用userInfo的接口来获取用户的详细信息(如用户权限,用户名等等信息)。
3.权限验证:通过token获取用户对应的权限,将请求的权限数组和用户信息存储到vuex中 ,动态根据用户的权限通过处理得到其对应有权限的路由,通过 router.addRoutes 动态添加这些路由。

一、登录:

登录成功后,服务端会返回一个 token(该token的是一个能唯一标示用户身份的一个key),之后我们将token存储在本地localstorage之中,这样下次打开页面或者刷新页面的时候能记住用户的登录状态,不用再去登录页面重新登录了。


存token
涉及的安全性问题:

为了保证安全性,后台所有token有效期(Expires/Max-Age)都是Session,就是当浏览器关闭了就丢失了。重新打开浏览器都需要重新登录验证,后端也会在每周固定一个时间点重新刷新token,让后台用户全部重新登录一次,确保后台用户不会因为电脑遗失或者其它原因被人随意使用账号。

二、拦截路由进行判断

用户登录成功之后,我们会在全局钩子router.beforeEach中拦截路由,判断是否已获得token,在获得token之后我们就要去获取用户的基本信息了


image.png

页面会先从 localstorage中查看是否存有 token,没有,就走一遍上一部分的流程重新登录,如果有token,就会把这个 token 返给后端去拉取user_info,保证用户信息是最新的。 当然如果是做了单点登录得的的话,用户信息存储在本地也是可以的。当你一台电脑登录时,另一台会被提下线,所以总会重新登录获取最新的内容。

三、权限控制

前端会有一份路由表,它表示了每一个路由可访问的权限。当用户登录之后,通过 token 获取用户的 role ,动态根据用户的 role 算出其对应有权限的路由,再通过router.addRoutes动态挂载路由。但这些控制都只是页面级的,说白了前端再怎么做权限控制都不是绝对安全的,后端的权限验证是逃不掉的。


router.addRoutes动态添加路由

前端控制页面级的权限,不同权限的用户显示不同的侧边栏和限制其所能进入的页面(也做了少许按钮级别的权限控制),后端则会验证每一个涉及请求的操作,验证其是否有该操作的权限,每一个后台的请求不管是 get 还是 post 都会让前端在请求 header里面携带用户的 token,后端会根据该 token 来验证用户是否有权限执行该操作。若没有权限则抛出一个对应的状态码,前端检测到该状态码,做出相对应的操作。


请求拦截内设置请求头

四、利用vuex管理路由表,根据vuex中可访问的路由渲染侧边栏组件。

具体实现:
1.创建vue实例的时候将vue-router挂载,但这个时候vue-router挂载一些登录或者不用权限的公用的页面。
2.当用户登录后,获取用role,将role和路由表每个页面的需要的权限作比较,生成最终用户可访问的路由表。
3.调用router.addRoutes(store.getters.addRouters)添加用户可访问的路由。
4.使用vuex管理路由表,根据vuex中可访问的路由渲染侧边栏组件。


image.png

相关文章

  • 手把手教你搞定权限管理,结合Spring Security实现接

    权限控管理作为后台管理系统中必要的功能,mall项目中结合Spring Security实现了基于路径的动态权限控...

  • 如何实现后台管理系统中的权限管理?

    总体思路: 1.用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token。 2.拿到t...

  • 【2020-05-18】权限笔记

    在后台管理系统中,权限分配管理是重要的组成部分。如何合理的去进行权限的控制是一个需要考虑的方式。 普通的后台管理系...

  • 权限设计(下) - 细说权限设计

    什么是权限管理一般来说,只要有用户参与的系统,那么都要有权限管理,尤其是一些后台的管理系统,权限管理可以实现对用户...

  • 演习开发

    后台管理系统 、后台管理系统的接口lmy-admin-apispringboot开发restful的接口,权限管理...

  • 20 演习开发

    后台管理系统 、后台管理系统的接口lmy-admin-apispringboot开发restful的接口,权限管理...

  • 演习开发--蓝墨云班课

    后台管理系统 后台管理系统的接口Imy-admin-api SpringBoot开发RESTful的接口,权限管理...

  • 摘录 - 如何做权限管理系统设计

    权限管理系统定义 权限管理是一个几乎所有后台系统的都会涉及的一个重要组成部分,主要目的是对整个后台管理系统进行权限...

  • Mobx实例应用

    背景: 这个问题要从一个后台管理系统的权限管理开始说起,我们将后台权限管理系统可以分为几个层级,如下: 账号登录,...

  • day17项目【权限管理】-03 权限管理功能(接口)

    01-权限管理需求描述 一、权限管理需求描述 不同角色的用户登录后台管理系统拥有不同的菜单权限与功能权限,权限管理...

网友评论

    本文标题:如何实现后台管理系统中的权限管理?

    本文链接:https://www.haomeiwen.com/subject/mgsuoktx.html