继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

使用EasyUI开发银行业绩统计系统[22]-角色权限管理的设计

程序员大阳
关注TA
已关注
手记 357
粉丝 1.5万
获赞 1523

一,简介

所谓的角色权限管理,其实就是角色所拥有的菜单的管理,当前系统的权限就到角色-菜单这一层。当然还是应该有更加深层次的权限设计,这个放在本系列的后传里面专门阐述。

本篇主要讲角色权限管理功能的设计,不涉及具体的代码实现,为啥要单独一篇讲设计,因为角色权限管理涉及角色表、菜单表、角色菜单表三张表,前台又是使用的EasyUI,其设计与实现非常有个性,且有多种实现方式,所以单独拿出一篇文章讲设计,是非常合理滴。

二,思路

1,首先角色权限管理,也属于对角色的管理,所以此功能放在role_manage.jsp页面中,在操作栏添加一个按钮"权限管理"即可,如下:
图片描述

2,当点击权限管理按钮时,弹出菜单选择对话框,选中角色已有的菜单应该是复选框默认选中的,角色未对应的菜单复选框默认不选中。

3,在菜单选择对话框,点击确定后,应该将用户选择的内容同步到数据库中,此时比较简单的做法是先把role_menu表中role对应的记录都删除,然后直接新增用户选择的菜单和角色的对应关系的记录。

这其中1,3都还算简单,但是2怎么实现呢?

三,带复选框的表格的默认选中项问题

1,其实最简单的是修改json字符串的格式,后台过来数据时就标记好那些菜单项是角色拥有的,然后在json中设置该项的checked为true,到前台自然就默认选中。但是由于ORM框架限制了Role_menu实体类的字段(必须跟数据库一一对应),所以此条道路不通。

2,先加载角色对应的,然后将对应的复选框打上勾,然后加载剩余的非对应的菜单。这种方式比较简单易行,但是菜单无法排序。(比如菜单很多的情况下,我们希望能按菜单名称或者菜单创建的先后顺序排序)

3,最后一种办法,就是先加载全部的菜单,然后对菜单进行遍历,遍历的过程中发现菜单是角色对应的,则对其打勾。

本着高端大气上档次的精神,选择方案3,下一篇予以实现。

打开App,阅读手记
3人推荐
发表评论
随时随地看视频慕课网APP