Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

能否提供一套没有权限管理的模板? #76

Closed
rainJohn opened this issue Feb 18, 2019 · 25 comments
Closed

能否提供一套没有权限管理的模板? #76

rainJohn opened this issue Feb 18, 2019 · 25 comments

Comments

@rainJohn
Copy link

目前系统mock的数据,耦合了权限管理模块,如果系统不需要权限,这个系统就不支持了哦。而且权限要按照你mock的数据格式去设置了。

@sendya
Copy link
Member

sendya commented Feb 18, 2019

你可以按照该图流程去掉进行校验的部分,并且主动添加所有菜单即可

permission

所有菜单
src\components\page\GlobalLayout.vue
L79 添加
import { asyncRouterMap } from '@/config/router.config.js'

L122 修改

this.menus = asyncRouterMap.find((item) => item.path === '/').children
// this.menus = this.mainMenu.find((item) => item.path === '/').children

@rainJohn
Copy link
Author

谢谢sendya的回复,我现在卡在了去掉权限的地方,如下代码块所示,我应该怎样修改呢?自己服务器的api,没有GetInfo这个方法,也没有role相关信息:

src/permission.js

`router.beforeEach((to, from, next) => {
NProgress.start() // start progress bar

if (Vue.ls.get(ACCESS_TOKEN)) {
/* has token */
if (to.path === '/user/login') {
next({ path: '/account/settings' })
NProgress.done()
} else {
if (store.getters.roles.length === 0) {
store
.dispatch('GetInfo')
.then(res => {
const roles = res.result && res.result.role
store.dispatch('GenerateRoutes', { roles }).then(() => {
// 根据roles权限生成可访问的路由表
// 动态添加可访问路由表
router.addRoutes(store.getters.addRouters)
const redirect = decodeURIComponent(from.query.redirect || to.path)
if (to.path === redirect) {
// hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
next({ ...to, replace: true })
} else {
// 跳转到目的路由
next({ path: redirect })
}
})
})
.catch(() => {
notification.error({
message: '错误',
description: '请求用户信息失败,请重试'
})
store.dispatch('Logout').then(() => {
next({ path: '/user/login', query: { redirect: to.fullPath } })
})
})
} else {
next()
}
}
} else {
if (whiteList.includes(to.name)) {
// 在免登录白名单,直接进入
next()
} else {
next({ path: '/user/login', query: { redirect: to.fullPath } })
NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it
}
}
})src/store/modules/permission.js 这个文件应该怎样修改?const permission = {
state: {
routers: constantRouterMap,
addRouters: []
},
mutations: {
SET_ROUTERS: (state, routers) => {
state.addRouters = routers
state.routers = constantRouterMap.concat(routers)
}
},
actions: {
GenerateRoutes ({ commit }, data) {
return new Promise(resolve => {
// const { roles } = data
// const accessedRouters = filterAsyncRouter(asyncRouterMap, roles)
commit('SET_ROUTERS', asyncRouterMap)
resolve()
})
}
}
}
`

@sendya
Copy link
Member

sendya commented Feb 18, 2019

文件 src/router/index.js#L11 改成这样

import Vue from 'vue'
import Router from 'vue-router'
import { constantRouterMap, asyncRouterMap } from '@/config/router.config'

Vue.use(Router)

export default new Router({
  mode: 'history',
  base: process.env.BASE_URL,
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRouterMap.concat(asyncRouterMap)
})

文件 src/main.js#L9 改成这样

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store/'
import { VueAxios } from '@/utils/request' // axios 不建议引入到 Vue 原型链上

import './core/use'
import bootstrap from './core/bootstrap'
// import '@/permission' // permission control
import '@/utils/filter' // global filter

Vue.config.productionTip = false

Vue.use(VueAxios, router)

new Vue({
  router,
  store,
  created () {
    bootstrap()
  },
  render: h => h(App)
}).$mount('#app')

文件 src\components\page\GlobalLayout.vue
L79 添加
import { asyncRouterMap } from '@/config/router.config.js'

L122 修改

this.menus = asyncRouterMap.find((item) => item.path === '/').children
// this.menus = this.mainMenu.find((item) => item.path === '/').children

@rainJohn
Copy link
Author

文件 src/router/index.js#L11 改成这样

import Vue from 'vue'
import Router from 'vue-router'
import { constantRouterMap, asyncRouterMap } from '@/config/router.config'

Vue.use(Router)

export default new Router({
  mode: 'history',
  base: process.env.BASE_URL,
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRouterMap.concat(asyncRouterMap)
})

文件 src/main.js#L9 改成这样

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store/'
import { VueAxios } from '@/utils/request' // axios 不建议引入到 Vue 原型链上

import './core/use'
import bootstrap from './core/bootstrap'
import '@/permission' // permission control
import '@/utils/filter' // global filter

Vue.config.productionTip = false

Vue.use(VueAxios, router)

new Vue({
  router,
  store,
  created () {
    bootstrap()
  },
  render: h => h(App)
}).$mount('#app')

文件 src\components\page\GlobalLayout.vue
L79 添加
import { asyncRouterMap } from '@/config/router.config.js'

L122 修改

this.menus = asyncRouterMap.find((item) => item.path === '/').children
// this.menus = this.mainMenu.find((item) => item.path === '/').children

您好,sendya,按照您的步骤,去掉了权限相关的验证了,非常感谢owner的帮忙哦.

顺便提一下,把下面的这段代码要注释掉修改为 next()
file: src/permission.js
// if (store.getters.roles.length === 0) {
// store
// .dispatch('GetInfo')
// .then(res => {
// const roles = res.result && res.result.role
// store.dispatch('GenerateRoutes', { roles }).then(() => {
// // 根据roles权限生成可访问的路由表
// // 动态添加可访问路由表
// router.addRoutes(store.getters.addRouters)
// const redirect = decodeURIComponent(from.query.redirect || to.path)
// if (to.path === redirect) {
// // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
// next({ ...to, replace: true })
// } else {
// // 跳转到目的路由
// next({ path: redirect })
// }
// })
// })
// .catch(() => {
// notification.error({
// message: '错误',
// description: '请求用户信息失败,请重试'
// })
// store.dispatch('Logout').then(() => {
// next({ path: '/user/login', query: { redirect: to.fullPath } })
// })
// })
// } else {
// next()
// }

@sendya
Copy link
Member

sendya commented Feb 19, 2019

文件 src/router/index.js#L11 改成这样

import Vue from 'vue'
import Router from 'vue-router'
import { constantRouterMap, asyncRouterMap } from '@/config/router.config'

Vue.use(Router)

export default new Router({
  mode: 'history',
  base: process.env.BASE_URL,
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRouterMap.concat(asyncRouterMap)
})

文件 src/main.js#L9 改成这样

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store/'
import { VueAxios } from '@/utils/request' // axios 不建议引入到 Vue 原型链上

import './core/use'
import bootstrap from './core/bootstrap'
import '@/permission' // permission control
import '@/utils/filter' // global filter

Vue.config.productionTip = false

Vue.use(VueAxios, router)

new Vue({
  router,
  store,
  created () {
    bootstrap()
  },
  render: h => h(App)
}).$mount('#app')

文件 src\components\page\GlobalLayout.vue
L79 添加
import { asyncRouterMap } from '@/config/router.config.js'
L122 修改

this.menus = asyncRouterMap.find((item) => item.path === '/').children
// this.menus = this.mainMenu.find((item) => item.path === '/').children

您好,sendya,按照您的步骤,去掉了权限相关的验证了,非常感谢owner的帮忙哦.

顺便提一下,把下面的这段代码要注释掉修改为 next()
file: src/permission.js
// if (store.getters.roles.length === 0) {
// store
// .dispatch('GetInfo')
// .then(res => {
// const roles = res.result && res.result.role
// store.dispatch('GenerateRoutes', { roles }).then(() => {
// // 根据roles权限生成可访问的路由表
// // 动态添加可访问路由表
// router.addRoutes(store.getters.addRouters)
// const redirect = decodeURIComponent(from.query.redirect || to.path)
// if (to.path === redirect) {
// // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
// next({ ...to, replace: true })
// } else {
// // 跳转到目的路由
// next({ path: redirect })
// }
// })
// })
// .catch(() => {
// notification.error({
// message: '错误',
// description: '请求用户信息失败,请重试'
// })
// store.dispatch('Logout').then(() => {
// next({ path: '/user/login', query: { redirect: to.fullPath } })
// })
// })
// } else {
// next()
// }

直接不引入 permission.js 即可,不需要注释

@tony2y
Copy link

tony2y commented Apr 17, 2019

我想请问一下,我想实现的是用我后端的Shiro的权限验证,直接不使用前端的权限控制(两套维护起来很麻烦),现在按照上面的方法进行更改,现在我需要进行正常的登录,但是直接页面都没有了

@wzw5566
Copy link

wzw5566 commented Jun 19, 2019

新版中找不到GlobalLayout.vue这个文件

@sendya
Copy link
Member

sendya commented Jun 19, 2019

@UnitDan
Copy link

UnitDan commented Nov 25, 2019

感谢owner大大
现在我遇到的麻烦是按照上面改过之后所有网页都不需要登录就可以访问了。如果我想单纯地保留token验证而去掉其他权限验证,该怎么修改呢?

@hwbrzzl
Copy link

hwbrzzl commented Dec 19, 2019

感谢owner大大
现在我遇到的麻烦是按照上面改过之后所有网页都不需要登录就可以访问了。如果我想单纯地保留token验证而去掉其他权限验证,该怎么修改呢?

我也遇到了这个问题,作为后端开发,真不明白为什么前端要搞的这么复杂。。。

@UnitDan
Copy link

UnitDan commented Dec 22, 2019

感谢owner大大
现在我遇到的麻烦是按照上面改过之后所有网页都不需要登录就可以访问了。如果我想单纯地保留token验证而去掉其他权限验证,该怎么修改呢?

我也遇到了这个问题,作为后端开发,真不明白为什么前端要搞的这么复杂。。。

我已经解决了这一块了,前面的步骤都是对的,但是要保留main.js里的第十五行permission检查
希望能帮到你

@zhangjiajia123
Copy link

请问你现在实现的流程有登陆吗,还是说项目打开就是首页

@UnitDan
Copy link

UnitDan commented Aug 4, 2020

请问你现在实现的流程有登陆吗,还是说项目打开就是首页

有登陆流程

@zhangjiajia123
Copy link

可以告知怎么实现吗

@zhangjiajia123
Copy link

按照上面给的案例方法是可以进入到首页的,但是菜单不显示

@UnitDan
Copy link

UnitDan commented Aug 4, 2020

菜单是指?

@zhangjiajia123
Copy link

可以加你微信或者qq吗我发截图给你

@UnitDan
Copy link

UnitDan commented Aug 4, 2020 via email

@zhangjiajia123
Copy link

问题已解决,看了你发的对于如何提问的文章对我很有帮助,非常感谢

@UnitDan
Copy link

UnitDan commented Aug 4, 2020 via email

@dangweiwu
Copy link

/src/router/index.js 需要把asyncRouterMap,constantRouterMap合并到一块
import { constantRouterMap, asyncRouterMap } from '@/config/router.config'
Object.assign(asyncRouterMap,constantRouterMap)

@lliu123
Copy link

lliu123 commented Nov 10, 2020

问题已解决,看了你发的关于如何提问的文章对我很有帮助,非常感谢

您好,方便问下是怎么解决的吗

@SoraYY
Copy link

SoraYY commented Apr 10, 2021

好的 继续加油吧

老哥 能交流下你是怎么改的吗?

@Zy143L
Copy link

Zy143L commented Sep 12, 2021

https://pro.antdv.com/docs/remove-authority-management
这套流程走完 侧栏无法显示

@dybxin
Copy link

dybxin commented Jan 9, 2024

这里去掉权限后, 如何把登录页直接屏蔽到, 打开直接是dashboard页面

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests