hooray / hooray.github.io

个人博客,请勿 Fork ,skr~
http://hurui.me/
3 stars 2 forks source link

重构 vue-element-admin 权限模块 | 9935 #35

Open hooray opened 5 years ago

hooray commented 5 years ago

https://hooray.github.io/posts/6237952e/

AlanJann commented 5 years ago

大佬,源码能贴出来看看吗,谢谢

hooray commented 5 years ago

@githubChinaTJ 部分代码已经贴出来了啊,理解思路后就可以自己实现了

AlanJann commented 5 years ago

3q3q

guishun80808 commented 5 years ago

这个需要后台在用户信息里面返回一个菜单列表跟一个按钮列表吗

hooray commented 5 years ago

@guishun80808 没太看懂你的问题

2518450374 commented 4 years ago

你看嘛..具体的路由权限列表已经返回..每一个页面有什么按钮权限直接查找就好了...我有点看不懂..你为什么{ path: 'page', component: () => import('@/views/permission/page'), name: 'PagePermission', meta: { title: 'Page Permission', auth: ['module.browse', 'module.create'] } } 还需要在路由里面添加auth,要是路由里面添加了anth,那直接就根据当前路由的auth来判断页面内权限就好了|-_-|

hooray commented 4 years ago

@L532J511X008 路由里的 auth 仅仅是准入权限,权限符合可以访问页面而已,比如上面那个例子,页面里可能有编辑按钮,删除按钮,而用户虽然具备 'module.browse', 'module.create' 权限,可以访问该页面,但因为没有 'module.edit', 'module.delete' 权限,所以不能进行编辑和删除操作,只能浏览和创建

2518450374 commented 4 years ago

这样子啊..我看的时候以为auth会包含用户此路由下的所有权限...谢谢...

2518450374 commented 3 years ago

你看嘛..那你这就是一个静态路由然后根据后端的权限进行筛选...比如要是编辑(或者是添加)这样子的非左侧菜单的路由...要怎么判断...也是添加auth吗...可是编辑添加是一个页面...这这这...怎么处理... const masterRouter = { path: '/master', component: Layout, name: 'Master', meta: { title: '数据管理', icon: 'el-icon-s-data' }, children: [ { path: 'corp', name: 'Corp', component: () => import('@/views/master/corp/index'), meta: { name: 'Corp', title: '企业信息', icon: 'form',auth:'corp.Look'},//这个是可以查看这个路由...(要是有其他的权限这个路由也得显示,而不是仅仅corp.look才可以看) }, { path: 'corp/edit',//编辑,添加 name: 'EditCorp', component: () => import('@/views/master/corp/edit'), meta: { name: 'Corp', title: '企业信息', activeMenu: '/master/corp'}, hidden: true }, { path: 'corp/show', name: 'ShowCorp', component: () => import('@/views/master/corp/show'), meta: { name: 'Corp', title: '企业信息', activeMenu: '/master/corp' }, hidden: true }] }

hooray commented 3 years ago

@L532J511X008 一般编辑和新增页面会拆分成两个路由,如果是一个路由,那就是在页面里进行判断,使用按钮鉴权,或者其它方式鉴权了

2518450374 commented 3 years ago

就是有点麻烦...每一个路由几乎都有编辑添加同页面的情况...我每一个页面都需要添加...还有谢谢...

hooray commented 3 years ago

@L532J511X008 应该也还好吧,只是把编辑和新增拆分成两个路由,但对应的页面组件还是调用的同一个,也就是说页面里的逻辑代码基本不用改,调整下路由配置就可以了

2518450374 commented 3 years ago

这样子也可以....我在页面内进行判断了...没有权限访问就404了,但是还有一个问题...你的根路由如何进行判断呢...因为只有子路由有相应得权限...一级路由是要把所有得子路由得权限都加在meta里面吗...

hooray commented 3 years ago

@L532J511X008 根路由不做校验,如果子路由均没有权限,生成的路由对应的children就会为空数组,在显示导航的时候判断一下,当children为空的时候,父导航不显示就行了。因为所有嵌套路由的父级导航一般对应的都是Layout或者一个空的布局页,所以问题不大。