Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
finance-manage
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
finance-oa
finance-manage
Commits
e5647793
Commit
e5647793
authored
Dec 18, 2021
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
路由支持单独配置菜单或角色权限
parent
903b5aeb
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
33 additions
and
2 deletions
+33
-2
ruoyi-ui/src/router/index.js
ruoyi-ui/src/router/index.js
+12
-1
ruoyi-ui/src/store/modules/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