我的索引路由定义为:
{ path: '/',adminOnly: false,component: Main },
有没有办法访问’adminOnly’属性?
routes.beforeEach((to,from,next) => { console.log(to) next(); });
我的路线档案:
import Vue from 'vue'; import VueRouter from 'vue-router'; import Main from '../components/Main.vue'; import About from '../components/About.vue'; const NotFoundException = { template: '<div>Route Was Not Found</div>' }; Vue.use(VueRouter); const routes = new VueRouter({ mode: 'history',hashbang: false,linkActiveClass: 'active',base: '/jokes',routes: [ { path: '/',{ path: '/about',component: About },{ path: '*',component: NotFoundException } ] }); routes.mode = 'html5'; routes.beforeEach((to,next) => { // CHECK IF ADMINONLY EXISTS next(); }); export default routes;
我确实通过添加一个adminOnly.js的混合物来获得解决方案,其中包含以下代码:
但是,如果我要将用户重定向到登录页面(如果不是管理员),则必须将mixin添加到每个组件中.
//只是一个测试
var isAdmin = false;
export default { beforeRouteEnter (to,next) { if(!isAdmin) { next((vm) => { vm.$router.push('/login'); }); } } }
解决方法
是的,有更好的方法来处理这个问题.每个路由对象都可以有元字段.只需在Meta对象中包装adminOnly属性:
routes: [ { path: '/',Meta: { adminOnly: false },component: NotFoundException } ]
检查管理员权限的路线:
router.beforeEach((to,next) => { if (to.matched.some(record => record.Meta.adminOnly)) { // this route requires auth,check if logged in // if not,redirect to login page. } }
原文地址:https://www.jb51.cc/js/150961.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。