需要实现的功能:不同的权限对应于不同的路由,而侧边栏需要根据不同的权限异步生成。
实现方法:分为登录和权限验证两个部分。
1.登录:用户填写填写账户密码,向后端验证是否正确,验证通过后返回一个token值,为了避免刷新页面后token丢失,可选择将其存放在cookie中,前端会根据token值去拉取一个接口(user_info)以获取用户的详细信息(eg.用户权限、用户名一类)
2.权限验证:通过token以获取用户对应的role,并动态根据用户的role算出其路由权限,并通过router.addRoutes来动态挂载路由至页面。
前端有一份路由表,表示每个路由可访问的权限,当用户登录后,通过token获取用户的role,从而算出其应有权限的路由,再通过router.addRoutes动态挂载路由,但是该方法都是页面级的,安全性无法得到保证。
若由后端控制权限(后端根据用户权限动态生成路由),当项目更新时会导致过度依赖后端
具体实现:1.创建vue实例时将vue-router挂载,此时挂载一些登录或不用权限的公用页面。
2.用户登录后
tips:上述所有的数据和操作均需通过vuex进行全局管理控制,而刷新页面后vuex的内容会丢失,因此需要重复上述的操作。