权限管理
对于一个 Web 应用,权限管理是经常会涉及的需求之一,通常包含以下几种常见的权限管理类型:
- 页面权限:当用户访问某个没有权限的页面时跳转到无权限页面;
- 操作权限:页面中的某些按钮或组件针对无权限的用户直接隐藏;
- 接口权限:当用户通过操作调用没有权限的接口时跳转到无权限页面。
#
初始化权限数据大多数情况下权限管理通常需要从服务端获取权限数据,然后在前端通过权限对比以此控制页面、操作等等权限行为。在 icejs 框架中约定通过 getInitialData
从服务端异步获取初始化的权限数据,并且约定最终返回格式为 {auth: {[key: string]: boolean }}
的形式。
#
页面权限页面权限通常也称之为路由权限,如需对某些页面进行权限控制只需在页面组件的 pageConfig
中配置准入权限即可。
#
操作权限在某些场景下,如某个组件中要根据角色判断是否有操作权限,我们可以通过 useAuth
Hooks 在组件中获取权限数据,同时也可以更新初始的权限数据。
#
获取权限数据#
设置权限数据#
自定义权限组件对于操作类权限,通常我们可以自定义封装权限组件,以便更细粒度的控制权限和复用。
使用如下:
#
接口鉴权请参考文档 数据请求,业务上封装统一的请求方法,与服务端约定接口协议,前端根据状态码判断无权限、未登录等状态,然后跳转到指定页面。
#
版本升级#
不再依赖状态管理方案icejs 2.0 开始,auth 直接基于 Context 实现,不再依赖状态管理方案,开发者使用方式保持一致。
#
插件内置icejs 1.11.2 开始框架默认内置权限插件,开发者无需安装。如果 ice.js 版本低于 1.11.2,需要自行安装 build-plugin-ice-auth
依赖,并在 build.json
中引入该插件。