摘要:为用户进行设置角色,登陆系统后,用户可使用其拥有角色对应的所有菜单。负责后台用户的菜单授权。这里仅实现了菜单的隐藏,需要再编写权限控制逻辑,使我们的系统更安全,但那是我们以后要考虑的事情。
问题描述
动态菜单管理,用户对应角色,角色对应菜单。
为用户进行设置角色,登陆系统后,用户可使用其拥有角色对应的所有菜单。
功能实现很简单,这里就不进行代码的讲解了,直接讲一下我所实现的思路。
实现 原设计系统设置中,前台菜单遵循如下格式:
menus: [ { text: "主导航", group: true, children: [ { text: "首页", link: "/main", icon: "anticon anticon-compass" }, { text: "系统设置", link: "/setting", icon: "anticon anticon-setting" } ], } ]
所以最开始的思路也很简单,后台的Menu实体中存储菜单所有相关的信息。
后台直接就查出当前登录用户所有的菜单,前台根据返回来的菜单数据构建前台菜单。
问题能实现肯定是能实现,但我们进行设计时,考虑的不应仅仅是实现,考虑的更多的是我这么实现,效率高不高?以后好不好改?能不能被以后维护的人员快速理解?
斟酌之后,断然抛弃了这种实现,因为,不能把所有的数据都放在后台。
就拿icon字段来说,如果我们采用了上述实现:
那当我们以后想修改前台菜单图标的时候,需要去修改后台的数据初始化。这显然不合理,以后维护的人员肯定会存在一个疑问,这是谁设计的菜单?我改个前台的图标为什么要动后台?
新设计既然不能讲数据都放在后台,那前后台就各司其职。
前台:包含菜单名称,菜单图标,菜单路由等信息。负责前台菜单的格式显示。
后台:只保留,菜单名,菜单路由,父菜单三项信息。负责后台用户的菜单授权。
核心思想就是:前台配置好所有的菜单,但默认将菜单隐藏。
应用启动时,查询后台接口,获取当前用户的所有授权菜单,授权一个,前台就显示一个。
前台菜单:写菜单时将hide置为true,默认隐藏。
menus: [ { text: "主导航", group: true, children: [ { text: "首页", link: "/main", hide: true, icon: "anticon anticon-compass" }, { text: "系统设置", link: "/setting", hide: true, icon: "anticon anticon-setting" } ] } ]
然后就是具体的逻辑,先获取前台的菜单,即所有菜单。
获取当前用户授权菜单列表,以路由表示该菜单唯一,如果路由被授权,就把hide置为false。
/** * 获取所有被授权的菜单 */ getAllAuthMenu(): Observable总结> { // 获取前台菜单 const menus = AppConfig.menus as Array
先完成,再完美。这里仅实现了菜单的隐藏,需要再编写权限控制逻辑,使我们的系统更安全,但那是我们以后要考虑的事情。现在先加个TODO。先把客户想要的功能先实现了,至于你实现得如何,代码如何,客户统统不关心,我们在先满足客户对开发速度需求的前提下,以后再抽出时间将程序的某些功能完美。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/73480.html
摘要:发布时我就想说那得喝一杯,这个版本的等待其实在社区里反应是有点忐忑,所以当跟我说来今天要发布时我说那晚上得喝一杯。当然,今天也算是个不错的日子,也发布了正式版。发布没多久,带来了一些很酷的操作。希望真正做到让开发者更加专注于业务。 ng-zorro-antd 0.7.0 发布时我就想说那得喝一杯,这个版本的等待其实在社区里反应是有点忐忑,所以当VTHINK跟我说来今天要发布 0.7 时...
摘要:很多人反应很难访问,所以转移到阿里云服务器上,因此做了一次完整的容器部署。在容器化过程中,我们并未配置任何等,只是保留服务所需的配置项而已,而这一部分我们可以放在反向代理层完成。 很多人反应很难访问 Github Page,所以 ng-alain.com 转移到阿里云服务器上,因此做了一次完整的 Angular 容器部署。 以下我会阐述 ng-alain 整个过程,其中包括 Docke...
摘要:很多人反应很难访问,所以转移到阿里云服务器上,因此做了一次完整的容器部署。在容器化过程中,我们并未配置任何等,只是保留服务所需的配置项而已,而这一部分我们可以放在反向代理层完成。 很多人反应很难访问 Github Page,所以 ng-alain.com 转移到阿里云服务器上,因此做了一次完整的 Angular 容器部署。 以下我会阐述 ng-alain 整个过程,其中包括 Docke...
摘要:项目中按钮权限注册全局自定义指令来完成的。如果对自定义指令不熟的话可以查阅官方文档。相关文章链接从到搭建后台框架打包优化从到搭建后台框架优化篇 前言 首先还是谢谢各位童鞋的大大的赞赞,你们的支持是我前进的动力!上周写了一篇从0到1搭建element后台框架,很多童鞋留言提到权限问题,这一周就给大家补上。GitHub 一、jwt授权认证 现在大多数项目都是采用jwt授权认证,也就是我们所...
阅读 631·2019-08-30 15:44
阅读 1289·2019-08-30 11:02
阅读 2924·2019-08-29 18:42
阅读 3494·2019-08-29 16:16
阅读 1700·2019-08-26 13:55
阅读 1749·2019-08-26 13:45
阅读 2370·2019-08-26 11:43
阅读 3172·2019-08-26 10:32