权限设计——控制显示字段——设计思考
根据用户角色,控制用户可见列表字段和导出列,整个系统都需要,方案该咋设计啊?
用户表挂角色表,角色表挂菜单表,菜单表挂字段表
---用户表--------------------------
user_id | user_name
1 | user1
2 | user2
---菜单表----------------------------
menu_id | menu_name |menu_type
1 | 订单列表 | page
2 | 订单导出 | btn
3 | 订单删除 | btn
----菜单字段表---------------------------------------------------------------
field_id | menu_id | menu_fields |menu_field_type | remark
1 | 1 | x1,x2,x3,x4 | listview | 列表展示
2 | 1 | y1,y2,y3,y4 | excelexport | excel导出
---角色菜单字段表--------------------------------------------------------------------
role_id | menu_id| role_menu_fields
1 | 1 | x1,x2,x3
2 | 1 | x2,x3,x4
3 | 1 | x1,x3,x4
----------------------------------------------------------------
role_id | menu_id | role_menu_fields |
1 | 1 | x1,x2,x3 |
2 | 1 | x2,x3,x4 |
3 | 1 | x1,x3,x4 |
==================================================================
另一种实现思路是对权限进行扩充
原始是:列表查看;
扩展后:列表查看1,列表查看2,列表查看3,列表查看4
原始是:订单导出;
扩展后:订单导出1,订单导出2,订单导出3,订单导出4
根据不同的权限,选择使用不同的提前写好的sql字段;
这种方式没有第一种灵活,但是比第一种要省事,开发难度也要低很多;
====================================================================
系统中的权限可以固定吗?固定了有哪些不好?
固定:提前设计成:增,删,改,查,导入,导出,排序,发邮件,发短信,授权,撤销,审核,发消息,移动,打印,系统设置权限(一般控制系统级按钮),扩展1,扩展2,扩展3,扩展4,扩展5,扩展6,扩展7,扩展8,扩展9,扩展10;
代码中使用枚举,依次判断用户是否有具体的权限;如果有导出,则显示导出按钮权限?
不好的地方是,扩展权限的名字和具体的业务对应会比较麻烦,比如使用扩展1控制了什么权限,大家都不知道。
使用不固定的权限,添加权限时,设置权限Code,比如:add del,update,view,improt,export,shortby,sendemail;
但是扩展部分就必须得和菜单添加配置协商对应了。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
想了一个方法,仍然使用第一种方式,将权限提前固定好,但是允许用户修改扩展权限的备注内容,将用户的修改保存起来,用来记录当前权限用来干啥了。
比如每添加一个菜单,就加载所有提前定义好的权限,允许用户修改扩展权限,的备注内容,但是不允许修改menu_code,和菜单名字。
每个菜单都对应生成所有权限,但是只有将权限设置成启用才会生效。
Fixed: advance designed to: add, delete, change, search, import, export, sorting mail, send text messages, authorization, revocation, audit, messaging, mobile, print, set permissions system (general control system level button), an extension, the extension 2, extension 3, 4 extension, extension 5, 6 extended, extension 7, 8 extend, extended 9, extension 10;
Use the code to enumerate, in order to determine whether the user has specific rights; if there are export rights to export button is displayed?
A bad place to be, extended right name and specific business correspondence would be more trouble, such as the use of extended control what authority, I do not know.
Use authority is not fixed, when adding permissions set permissions Code, for example: add del, update, view, improt, export, shortby, sendemail;
But the extension would have to add menus and configuration negotiation correspond.