通过统一调用以及参数配置实现SSO和UM菜单权限的配置
npm install snk-sso-um --save
...
extraBabelIncludes:["node_modules/snk-sso-um"], // <-- 增加babel 编译配置
env: {
development: { // 开发环境
extraBabelPlugins: [
'dva-hmr',
],
define: {
SERVER: '',
// 单点登录用户信息接口 具体业务具体填写
SSOSERVER:'http://ip:port/sso/user',
UMMENUSERVER:'http://ip:port/um/system/这里是UM系统名/user/{userCode}/menu',
UMBUTTONSERVER:'http://ip:port/um/system/这里是UM系统名/user/{userCode}/button',
SSOLOGOUTSERVER:'http://10.1.109.27:8080/sso/logout',
}
},
},
DEMO
名称 | 类型 | 描述 |
---|---|---|
um | boolean | 是否使用UM权限 默认为false |
menuData | JSON | 菜单数据,如果UM为true的时候不传 |
router | JSON | 路由注册数据 |
useButtonPermission | boolean | 是否使用调用BUTTON权限 默认为false |
... | 其他参数 | 固定写法,参照demo中的配置 |
DEMO
其中增加了ssoummodel的注入,以及Menu菜单数据的注入,以及退出的等方法实现
新的工程可直接拷贝这个页面使用
首先需要在UM系统中进行按钮的相关配置
然后.roadhogrc.js配置增加按钮路径的配置UMBUTTONSERVER字段
然后src/router.js 中配置 useButtonPermission为true
普通按钮权限
import { PermissionWrapper } from 'snk-sso-um';
<PermissionWrapper permissionKey='um系统中对应的按钮的名称'>
<Button>删除</Button> // <- 这里原来怎么写就怎么写
</PermissionWrapper>
理论上是可以包裹任意的组件,但是包裹Select.Option报错,所以增加了如下的实现。
下拉按钮的权限
import { PermissinSelectOption } from 'snk-sso-um';
<Select>
<Option>审批</Option>
<Option>未审批</Option>
<Option><PermissinSelectOption permissionKey='um系统中对应的按钮的名称'>权限</PermissinSelectOption></Option>
</Select>
因为封装时候的代码,在src\AuthorityWrapper\router中封装了model的引用,在开发和发布的时候因为实际的业务model路径不一致,所以需要做如下的更改
http://git.sinosafe.com.cn/snk/snk-sso-um/blob/master/src/AuthorityWrapper/router.js#L23
http://git.sinosafe.com.cn/snk/snk-sso-um/blob/master/src/AuthorityWrapper/router.js#L39
23行39行 路径为:
../models
23行39行 路径为:
../../../../src/models