当前位置:首页 > wifi设置知识 > 正文内容

vue路由权限

秋天2023年04月23日 07:00:06wifi设置知识195

想要了解更多关于vue路由权限和vue路由权限管理的知识吗?那么本文将为您提供全面的介绍和解释,同时还会分享一些实用的技巧和建议。

本文内容目录一览:

vue-element-admin权限路由

1、java端:

1.1、通过接口闷唯获取该用户的角色权限

此处不再复述

2、没态vue-element

其主要处理是在这个文件

2.2、permission.js

import router, {asyncRoutes,constantRoutes }from '@/router'

import {getAuthMenu }from '@/api/user'

import Layoutfrom '@/蚂察培layout'

/**

* Use meta.role to determine if the current user has permission

* @param roles

* @param route

*/

function hasPermission(roles, route) {

if (route.meta route.meta.roles) {

return roles.some(role = route.meta.roles.includes(role))

}else {

return true

  }

}

/**

* Filter asynchronous routing tables by recursion

* @param routes asyncRoutes

* @param roles

*/

export function filterAsyncRoutes(routes, roles) {

const res = []

routes.forEach(route = {

const tmp = { ...route }

if (hasPermission(roles,tmp)) {

if (tmp.children) {

tmp.children =filterAsyncRoutes(tmp.children, roles)

}

res.push(tmp)

}

})

return res

}

const state = {

routes: [],

addRoutes: [],

perms: []

}

const mutations = {

SET_ROUTES: (state, routes) = {

state.addRoutes = routes

state.routes =constantRoutes.concat(routes)

},

ADD_LOGIN_USER_INFO: (state, data) = {

state.perms = data

}

}

const actions = {

generateRoutes({ commit }, roles) {

return new Promise(resolve = {

const loadMenuData = []

// 先查询后台并返回左侧菜单数据并把数据添加到路由

      getAuthMenu(roles).then(response = {

let data = response

if (response.code !==0) {

this.$message({

message:'菜单数据加载异常',

type:0

          })

}else {

const permis = response.pers

data = response.menuList

console.log('==============加载===========')

Object.assign(loadMenuData,data)

generaMenu(asyncRoutes,loadMenuData)

const accessedRoutes =asyncRoutes || []

// accessedRoutes.push({ path: '*', component: () = import('@/views/error-page/404'), hidden: true })

          commit('ADD_LOGIN_USER_INFO',permis)

commit('SET_ROUTES',accessedRoutes)

router.addRoutes(accessedRoutes)

resolve(accessedRoutes)

}

})

})

}

}

/**

* 后台查询的菜单数据拼装成路由格式的数据

* @param routes

*/

/* export function generaMenu(routes, data) {

data.forEach(item = {

let tempUrl = item.url

if (item.url === null) {

tempUrl = ''

}

const menu = {

path: item.url === null ? item.ename : item.url,

component: item.url === null ? Layout : resolve = require([`@/views${tempUrl}`], resolve),

children: [],

name: 'menu_' + item.menuId,

meta: { title: item.name, id: item.menuId, roles: ['admin'], icon: item.icon }

}

if (item.list) {

generaMenu(menu.children, item.list)

}

if (item.menuId !== -100) {

routes.push(menu)

}

})

}*/

export function generaMenu(routes, data) {

data.forEach(item = {

if (item.state ===0) {

let typeParentId =''

      if (item.parentId ===0) {

typeParentId ='noRedirect'

      }

let tempUrl = item.urlNew

      if (item.urlNew ===null) {

tempUrl =''

      }

if (item.parentId !==0 item.urlNew ===null) {

tempUrl ='/404'

        item.urlNew ='/404'

      }

let menu = {}

if (item.Identify ===1) {// 需铺满屏幕(隐藏左侧导航栏)

        menu = {

path: item.urlNew ===null ? item.ename : item.urlNew,

hidden: item.type ===2,

children: [],

name:'menu_' + item.menuId,

redirect:typeParentId,

meta: {title: item.name,id: item.menuId,roles: ['admin'],icon: item.iconNew }

}

}else {

menu = {

path: item.urlNew ===null ? item.ename : item.urlNew,

component: item.urlNew ===null ? Layout : resolve = require([`@/views${tempUrl}`], resolve),

hidden: item.type ===2,

children: [],

name:'menu_' + item.menuId,

redirect:typeParentId,

meta: {title: item.name,id: item.menuId,roles: ['admin'],icon: item.iconNew }

}

}

if (item.list) {

generaMenu(menu.children, item.list)

}

routes.push(menu)

}

})

}

export default {

namespaced:true,

state,

mutations,

actions

}

Vue实战篇|使用路由管理用户权限(动态路由)

权限控制是后台管理系统比较常见的需求,如果我们需要对某些页面的添加权限控制的话,那我们可以在路由管理中的权限做一些校验,没有通过权限校验的给出相应的提示或者直接跳转到报错页面。

跟着我一起来学vue实战篇路由管理权限吧!

getCurrentAuthority()函数用于获取当前用户权限,一般来源于后台数据

check()函数用于权限的校验匹配

isLogin()函数用于检验用户是否登备首录

路由配置元信息meta:{ authority: ["admin"] }

使用to.matched获取跳转路由的全部信息,包括父路由和子路由

使用lodash中的判高findLast匹配离跳转路由配置权限的元信息

引入auth.js中check()和isLogin()进行判断掘滚尺是否具有权限或是否已登录

如果没有权限则给出提示信息后跳转到403页面,未登录则返回登录页面

运行结果

当getCurrentAuthority()函数返回admin时,则菜单会显示所有元信息meta:{ authority: ["admin"] }的路由菜单;

如返回值为user时,菜单会显示所有元信息meta:{ authority: ["user"] }的路由菜单

接下来CrabFort会带大家一起实现更加精细化的权限设计(权限组件、权限指令)

vue 项目路由权限管理实现

项目基于 vue-element-admin 基础之上进行开发,感谢 花裤衩 以及为此项目做出贡献的大佬 [社会社会]!

路由数据由后端控制,前端调用接口返回数据;前端拿到数据处理成可使用的路由结构,然后渲染到页面。

为了能提供更多的功能,后端返回的数据结构是在原来菜单结构基础之上有所改动的。

原路由数据结构:

后端返回数据结构:

路由数据采用多级嵌套结构,基本可以满足需求。

拿到接口返回的数据之后还不能直接使用,需要经过一些处理。

在本地的开发,新增页面时,为了方便开发,获取到后端返回的数据之后用了一个方法来合并数据:

temporaryMenuArray 临时路由数组的结构需要跟后端返回的数据结构一致。

使用 setTemporaryMenu :

合并完临时的路由之后就开始进行路由的处理了。

从上面后端返回的数据结构中可以看出,已经和需要处理成的路由很像了,但还是有一些数据没有必要在专门的系统那里维护,所以需要一些其他数据的皮穗没处理:

routesComponents 为一个手动维护的页面路由文件:

得到的 userCanUseRouteModules 结构如下:

上面数据中的 type 为2、3层级的 component 已经被替换成对应页面的路由模块了。

得到 userCanUseRouteModules 之后,其中 name 为 storeManagement:head 的那一层数据是供头部菜单使用的,其 children 的数据才是需要添加的路由数据:

此时的 asyncRoutes 只放了默认匹配的路由,这个是需要放在所有路由的最后的:

至此对路由的处理结束。

处理路由这一步是放在 router.beforeEach 路由全局前置守卫里的,结合原有的逻辑进行了一些判断处理。

因为路由数据是由后端数据处理得到的,只包含和挂载了当前用户能有权限访问的部分,没有权燃纳限访问的路由就没有被 router.addRoutes 添加,所以并没有在路由守卫里对每次路由的跳转都进行校族陪验。

不要害怕调整路由器和WIFI设置。使用我们提供的指南和技巧,您可以轻松地自定义您的网络,以满足您的需求。

扫描二维码推送至手机访问。

版权声明:本文由路由设置网发布,如需转载请注明出处。

本文链接:https://www.shoulian.org/luyou/post/27119.html

分享给朋友:

“vue路由权限” 的相关文章

怎么更改路由器无线密码

怎么更改路由器无线密码

针对怎么更改路由器无线密码这个问题,本文将综合不同朋友对这个路由器无线密码如何修改的知识为大家一起来解答,希望能帮到大家 本文内容目录一览: 1、无线路由器密码怎么改 两种方法轻松修改路由器密码 2、无线路由器密码怎么改 3、无线路由器的密码忘记了怎么办?怎样修改密码? 4、怎样修改无线...

腾达路由器漏洞怎么修改

腾达路由器漏洞怎么修改

有很多朋友不知道腾达路由器漏洞怎么修改要如何操作,今天为大家整理了很多破解腾达路由器相关的答案,组成一篇内容丰富的文章,希望能到您 本文内容目录一览: 1、腾达路由器怎么怎么重新设置 2、腾达无线路由器密码怎么设置与修改 3、怎样修改腾达无线路由器密码修改 4、腾达无线路由器修密码修改方...

不同路由器怎么中继

不同路由器怎么中继

当朋友们看到这个文章时想必是想要了解不同路由器怎么中继相关的知识,这里同时多从个角度为大家介绍无线路由器怎样中继相应的内容。 本文内容目录一览: 1、如何设置中继路由器 2、如何利旧路由器来实现无线中继 3、两台路由器如何中继wifi网络 4、两个路由器如何设置中继 5、路由器中继怎...

路由器怎么没有网啊

路由器怎么没有网啊

今天和朋友们分享路由器怎么没有网啊相关的知识,相信大家通过本文介绍也能对路由器没网?有自已的收获和理解。自己轻松搞问题。本文内容目录一览: 1、无线路由器,突然没有网了,怎么办? 2、路由器没网络怎么回事 3、无线路由连上了却没有网络,怎么办? 4、我家的路由器怎么没有了网络是怎么回事啊...

路由器怎么藏电视后面

路由器怎么藏电视后面

针对路由器怎么藏电视后面这个问题,本文将综合不同朋友对这个路由器隐藏在电视后面的知识为大家一起来解答,希望能帮到大家 本文内容目录一览: 1、请问,电视机下面机顶盒和路由器的线怎么处理好看些? 2、卧室床尾挂电视,有线合,路由器怎么摆放 3、路由器可以放在电视边有信号的地方吗?究竟怎么放才最...

无线wif怎么连接路由器

无线wif怎么连接路由器

针对无线wif怎么连接路由器这个问题,本文将综合不同朋友对这个无线路由器如何连接wifi的知识为大家一起来解答,希望能帮到大家 本文内容目录一览: 1、wifi无线路由器怎么连接? 2、无线路由器怎么设置连接wifi 3、路由器怎么连接wifi wifi无线路由器怎么连接? 安装好了路由...