欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vue实现后台管理系统页面功能和页面路由权限的控制

程序员文章站 2022-03-24 18:38:03
...

1. 页面路由权限的设置(基于路由守卫):新建router/router.js和router/index.js路由文件。

//router/router.js文件
import Admin from '@/views/Admin.vue'
export default [
	{
		path:"/",
		redirect:"/admin"
	},{
		path:"/admin",
		name:"admin",
		component:Admin
	}
]
//router/index.js文件代码
import Vue from 'vue'
import Router from 'vue-router'
import routes from "./router.js"
import {getCookie,setCookie} from "@/api/cookieApi.js"

Vue.use(Router)
const router=new  Router({
	routes
})

router.beforeEach((to, from, next) => {   //导航守卫,即没有登录的情况下,不允许跳转到admin页面	
	var arr=getCookie("userJurisdiction");//登录成功时,后端返回该用户的功能和页面权限,如['page.admin','page.order','func.changeUpwd'],page.是页面权限,func.是功能权限。
	if(to.name !="login"){
		var token=getCookie("token");       //是否登录的判断,可以有cookie中是否有登录信息决定    
		if(token){				
			if(arr){			
				arr=JSON.parse(arr);			
				if(arr.indexOf(to.path) > -1){//,如果要跳转的页面,在改用户返回的权限页面中,则跳转改用户权限页面				
					next()
				}else{	//否则不跳转,或者跳转404页面		
					next({path:""})
				}
			}
			
		}else{
			if(to.name==="login"){
				next()
			}else{
				next({name:'login'})
			}
		}
	}
})

export default router

2.页面功能在不同权限下是否显示该功能的设置:

<tempalte>
    <button @click='click' v-if='isShow'>修改密码</button>
</tempalte>
<script>
    import {getCookie,setCookie} from "@/api/cookieApi.js"	
    export default{
        computed:{
            isShow(){
                var arr=getCookie("userJurisdiction");
                if(arr.indexOf('func.changeUpwd') > -1){
                    return true
                }else {
                    return false
                }
            }
        }
    }
   
</script>
<style scope>
    
</style>

 

 

相关标签: vue 路由守卫