脚本宝典收集整理的这篇文章主要介绍了前端如何实现权限管理板块的流程和思想,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
权限管理是指一个角色(如vip和非vip)在一个系统中只能使用指定的功能并且只能访问指定的界面,权限管理是一个项目当中必不可少的部分。
注意: 新版 Vue Router 中用
router.addRoute
来替代原有的router.addRoutes
来动态添加路由、子路由。
路由分为两块:
用户登录后后端会返回一个当前用户的权限标识,前端通过给定的权限标识筛选出用户能够访问的有权限的路由,先把筛选出来的有权限的路由通过 addRoutes 添加到实例上,目的是为了可以通过地址栏访问,然后把筛选出来有权限的动态路由存储到 vuex 中,目的是为了能够在菜单栏中体现。
注意:这里的 addRoutes 有一定的缺陷,它在导航守卫进行完一次后才会添加新配置的路由,所以需要让它再走一次导航守卫才能够使用。
主要后端负责,前端负责请求响应拦截统一处理
// 路由实例化
const createRouter = () =>
new Router({
// mode: 'history', // require service support
scrollBehavior: () => ({ y: 0 }),
// 这里放的是静态路由
routes: constantRoutes
})
const router = createRouter()
// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
// 重置路由 只需要在退出登陆时调用即可
export function resetRouter() {
const newRouter = createRouter()
router.matcher = newRouter.matcher // reset router
}
有些按钮也是需要权限来判断是否显示,这时就可以通过自定义指令来解决。
自定义指令
export default {
自定义指令名: {
// 渲染后钩子函数
inserted(dom, obj) {},
// 更新后钩子函数
componentUpdated(dom, obj) {},
// 解绑后钩子函数
unbind(dom) {}
}
}
/* 导入全局自定义指定
Vue.directive(指令名,{生命周期}) */
import directivesJs from '@/directives'
/* 这里通过 Object.key() 方法获取所有自定义指令名,以便自动注册 */
Object.keys(directivesJs).forEach((item) => {
Vue.directive(item, directivesJs[item])
})
以上是脚本宝典为你收集整理的前端如何实现权限管理板块的流程和思想全部内容,希望文章能够帮你解决前端如何实现权限管理板块的流程和思想所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。