Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
sts网站
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liyang
sts网站
Commits
e5647793
Commit
e5647793
authored
Dec 18, 2021
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
路由支持单独配置菜单或角色权限
parent
903b5aeb
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
33 additions
and
2 deletions
+33
-2
index.js
ruoyi-ui/src/router/index.js
+12
-1
permission.js
ruoyi-ui/src/store/modules/permission.js
+21
-1
No files found.
ruoyi-ui/src/router/index.js
View file @
e5647793
...
...
@@ -17,6 +17,8 @@ import Layout from '@/layout'
* redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
* name:'router-name' // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
* query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
* roles: ['admin', 'common'] // 访问路由的角色权限
* permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限
* meta : {
noCache: true // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
...
...
@@ -85,11 +87,16 @@ export const constantRoutes = [
meta
:
{
title
:
'个人中心'
,
icon
:
'user'
}
}
]
},
}
]
// 动态路由,基于用户权限动态去加载
export
const
dynamicRoutes
=
[
{
path
:
'/system/user-auth'
,
component
:
Layout
,
hidden
:
true
,
permissions
:
[
'system:user:edit'
],
children
:
[
{
path
:
'role/:userId(
\\
d+)'
,
...
...
@@ -103,6 +110,7 @@ export const constantRoutes = [
path
:
'/system/role-auth'
,
component
:
Layout
,
hidden
:
true
,
permissions
:
[
'system:role:edit'
],
children
:
[
{
path
:
'user/:roleId(
\\
d+)'
,
...
...
@@ -116,6 +124,7 @@ export const constantRoutes = [
path
:
'/system/dict-data'
,
component
:
Layout
,
hidden
:
true
,
permissions
:
[
'system:dict:list'
],
children
:
[
{
path
:
'index/:dictId(
\\
d+)'
,
...
...
@@ -129,6 +138,7 @@ export const constantRoutes = [
path
:
'/monitor/job-log'
,
component
:
Layout
,
hidden
:
true
,
permissions
:
[
'monitor:job:list'
],
children
:
[
{
path
:
'index'
,
...
...
@@ -142,6 +152,7 @@ export const constantRoutes = [
path
:
'/tool/gen-edit'
,
component
:
Layout
,
hidden
:
true
,
permissions
:
[
'tool:gen:edit'
],
children
:
[
{
path
:
'index'
,
...
...
ruoyi-ui/src/store/modules/permission.js
View file @
e5647793
import
{
constantRoutes
}
from
'@/router'
import
auth
from
'@/plugins/auth'
import
router
,
{
constantRoutes
,
dynamicRoutes
}
from
'@/router'
import
{
getRouters
}
from
'@/api/menu'
import
Layout
from
'@/layout/index'
import
ParentView
from
'@/components/ParentView'
...
...
@@ -42,7 +43,9 @@ const permission = {
const
rdata
=
JSON
.
parse
(
JSON
.
stringify
(
res
.
data
))
const
sidebarRoutes
=
filterAsyncRouter
(
sdata
)
const
rewriteRoutes
=
filterAsyncRouter
(
rdata
,
false
,
true
)
const
asyncRoutes
=
filterDynamicRoutes
(
dynamicRoutes
);
rewriteRoutes
.
push
({
path
:
'*'
,
redirect
:
'/404'
,
hidden
:
true
})
router
.
addRoutes
(
asyncRoutes
);
commit
(
'SET_ROUTES'
,
rewriteRoutes
)
commit
(
'SET_SIDEBAR_ROUTERS'
,
constantRoutes
.
concat
(
sidebarRoutes
))
commit
(
'SET_DEFAULT_ROUTES'
,
sidebarRoutes
)
...
...
@@ -106,6 +109,23 @@ function filterChildren(childrenMap, lastRouter = false) {
return
children
}
// 动态路由遍历,验证是否具备权限
export
function
filterDynamicRoutes
(
routes
)
{
const
res
=
[]
routes
.
forEach
(
route
=>
{
if
(
route
.
permissions
)
{
if
(
auth
.
hasPermiOr
(
route
.
permissions
))
{
res
.
push
(
route
)
}
}
else
if
(
route
.
roles
)
{
if
(
auth
.
hasRoleOr
(
route
.
roles
))
{
res
.
push
(
route
)
}
}
})
return
res
}
export
const
loadView
=
(
view
)
=>
{
if
(
process
.
env
.
NODE_ENV
===
'development'
)
{
return
(
resolve
)
=>
require
([
`@/views/
${
view
}
`
],
resolve
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment