1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > antd权限管理_Ant Design Pro开发后台管理系统(权限)-阿里云开发者社区

antd权限管理_Ant Design Pro开发后台管理系统(权限)-阿里云开发者社区

时间:2018-09-07 13:14:19

相关推荐

antd权限管理_Ant Design Pro开发后台管理系统(权限)-阿里云开发者社区

前言

权限是后台管理系统常见的需求,后台开发必须考虑设计的模块,antd-pro给我们提供了很好的关于权限的封装,我们只需要在配置菜单的时候配置上准入身份,在登录成功以后获取到登陆者身份以后更新登录人身份参数即可。

效果:

1、没有准入权限的菜单将不显示

2、直接在浏览器输入没有准入权限的的地址,将跳转到403页面(图1)

图1.直接输入地址但却没有权限

个人demo关于权限简介

1、用邮箱自己注册账户(注册后可以登录但是没有任何权限)guest

2、联系管理员分配权限(分配后可以查看有权限的页面)

3、每次登录后获取最新的权限身份(如:admin,user,guest)

实战

Authorized组件是antd-pro的权限组件

Authorized 官方api

在src/router.js中会发现如下代码

path="/"

render={props => }

authority={['admin', 'user', 'guest']}

redirectPath="/user/login"

/>

其中authority对象就是准入身份的数组,表示只有这些身份的人可以登录,我们在配置的时候一定不要忘记在这更新我们新增的身份

然后就是menu.js,如下,展示了我们在配置菜单的时候怎么配身份

const menuData = [{

name: '题库管理',

path: 'question',

icon: 'warning',

authority: ['admin', 'user'],

children: [{

name: '题库列表',

path: 'list',

}, {

name: '编辑题目',

path: 'create-question',

hideInMenu: true,

}, {

name: '科目管理'

}]

}, {

name: '账号管理',

icon: 'warning',

path: 'account',

children: [{

name: '账号列表',

path: 'list',

authority: 'admin',

}, {

name: '建设中',

path: '',

authority: ['admin', 'user'],

}]

}]

然后就要说一下登录成功以后怎么获取权限了

effects:{

* login({payload}, {call, put}) {

const response = yield call(login, payload);

yield put({

type: 'changeLoginStatus',

payload: response,

});

// 登录成功以后更新权限,跳转页面

if (response && response.code === '0000') {

reloadAuthorized();

yield put(routerRedux.push('/'));

}

},

},

reducers: {

changeLoginStatus(state, {payload}) {

let _status = "ok";

let _user = "admin";

setToken("token");

setAuthority(_user);//设置权限

return {

...state,

status: _status,

type: 'account',

};

},

}

我们看看setAuthority、reloadAuthorized这两个方法都做了什么事儿

//设置身份

export function setAuthority(authority) {

return localStorage.setItem('antd-pro-authority', authority);

}

//获取身份

export function getAuthority() {

return localStorage.getItem('antd-pro-authority');

}

如此而且,只是把新的身份值存在localStorage里边,注意getAuthority,下边会用到

import RenderAuthorized from '../components/Authorized';

import { getAuthority } from './authority';

let Authorized = RenderAuthorized(getAuthority());

const reloadAuthorized = () => {

Authorized = RenderAuthorized(getAuthority());

};

export { reloadAuthorized };

export default Authorized;

RenderAuthorized: (currentAuthority: string | () => string) => Authorized

权限组件默认 export RenderAuthorized 函数,它接收当前权限作为参数,返回一个权限对象,该对象提供以下几种使用方式。

Authorized

最基础的权限控制。

参数

说明

类型

默认值

children

正常渲染的元素,权限判断通过时展示

ReactNode

-

authority

准入权限/权限判断

`string

array

Promise

(currentAuthority) => boolean`

-

noMatch

权限异常渲染元素,权限判断不通过时展示

ReactNode

-

Authorized.AuthorizedRoute

参数

说明

类型

默认值

authority

准入权限/权限判断

`string

array

Promise

(currentAuthority) => boolean`

-

redirectPath

权限异常时重定向的页面路由

string

-

其余参数与 Route 相同。

Authorized.Secured

注解方式,@Authorized.Secured(authority, error)

参数

说明

类型

默认值

authority

准入权限/权限判断

`string

Promise

(currentAuthority) => boolean`

-

error

权限异常时渲染元素

ReactNode

Authorized.check

函数形式的 Authorized,用于某些不能被 HOC 包裹的组件。 Authorized.check(authority, target, Exception)

注意:传入一个 Promise 时,无论正确还是错误返回的都是一个 ReactClass。

参数

说明

类型

默认值

authority

准入权限/权限判断

`string

Promise

(currentAuthority) => boolean`

-

target

权限判断通过时渲染的元素

ReactNode

-

Exception

权限异常时渲染元素

ReactNode

-

附上管理员分配权限页面

分配权限

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。