说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于用户离职和升级后的处理?

编辑:说三道四文库 发布时间:2017-12-14 01:01
HTML文档下载 WORD文档下载 PDF文档下载
在原来开发的时候,用户填写意见什么的都是存的用户ID,现在就有这么一个问题:如果A用户离职后,那么如何反映该用户已经离职(是否是删除用户),如果删除的话那么那些意见A原来批示的文章意见怎么反映出来?如果B是一个新用户,在原系统中的信息B如何可以看到,要不该人员的信息全为空??
有没有好的解决方案,谢了!
采用用户与权限角色分开的处理方式;
只要某个用户有访问的权限或分配了这个角色,就可以看到;
将另一用户收回角色,就没有权限访问了。

另离职后的用户,不能删除,最好做离职标志。
有一个这样的问题,如文件1是给A一个人看的,可是A离职后B接替A工作,那么文件1B也应该可以看到?如何处理?谢了
我们可以这样做,为角色分配权限,而不是为针对某人权限。而针对个人,则应属于一定的角色,从角色中继承权限。A离职后,个人档案可除,但可分配另一个担当A的角色。为新用户B分配一个角色,即可根据角色权限查看信息。
也就是说权限只能对角色而不能对人了?
对!权限只能对角色而不能对个人。
把权限授与角色后,扮演此角色的人其权限可以copy该角色即可。
对于比较大一些的系统,一定要用“角色”;
离职,不要做真删除,应该作标记删除。
可以建个功能字典,记录所有的功能(功能号,功能名);然后为登陆用户分配权限,记录在另一个表中(功能名,用户);这样,当用户操作时,先检查是否有该功能权限,
用户属于某一特定角色,角色具有某些或全部权限
一般都这样处理
study
我们的系统采用了权限模板和具体权限的方法,系统的用户不允许用户删除(除非到数据库中删除),系统的用户有一个停用标志,如果选择的话,这个用户只是停用,不能删除!
如果都用角色不用用户的话那么用户多的时候是不是每一个人都有一个属于自己的角色?
如果不是那么比如我想将一篇资料只给单位局长看时怎么操作?或只给C用户看时怎么办?
使用用户的有效期来截止用户权限,又能保持历史纪录,一般不应删除用户。
如果都用角色不用用户的话那么用户多的时候是不是每一个人都有一个属于自己的角色?
如果不是那么比如我想将一篇资料只给单位局长看时怎么操作?或只给C用户看时怎么办?

=============
你的这种说法不对,用户和角色都要有,一个用户可以拥有一种或几种角色,A用户和B用户拥有的角色可能是相同的,那么这时,A和B的权限就是一致的.将一篇资料只给单位局长看时,那就创建一个可以看这个资料的角色,局长对应的用户有这个角色,他就有看这个资料的权限,以后如果其他用户也有这个权限,就只需分配角色就可以了,易于维护
那如果角色被停用了,是不是也最好做一个停用标志?那多角色用户被停用了一个角色之后,
对这个用户怎么处理呀?
hongchenzpm111(红尘) ( ) 信誉:100 
将一篇资料只给单位局长看时,那就创建一个可以看这个资料的角色,局长对应的用户有这个角色
===============
我就是考虑到如果信息很多共享的时候,如用户A、B、C,A将资料1给只给B看,A将资料2只给给C看;以此类推,那不是相当于每一个用户都至少有一个对应于自己的角色了?
如果还有其它相同权限时又有一个角色,这样的话角色是不很多吗?好维护吗?我想这样的话管理员工作量很大

up
授权,

用一个状态标志表示A已经离职,该账户失效,删除不好,无法备份。
B用户接替A,则把A用户的权限授给B。
这么简单的问题。
请问
当多个用户共用一个角色,而且要求每个用户只能关心自己的数据,
当有人离职后,该如何处理权限呢?
把角色分组管理
在这个组里面,组成员拥有的权限是一样的。
在数据的共享上面,细分到增加一个字段为operatorid,这样不同的用户就只能看到自己的数据。
当A离职的时候,如果要把A的数据让B共享,只要update这个字段为A的ID就可以,取数据的时候where opreratorid=B
这不是很简单的问题吗?
关于权限设计的探讨  

但凡涉及多用户不同权限的网络或者单机程序,都会有权限管理的问题,比较突出的是MIS系统。下面我要说的是MIS系统权限管理的数据库设计及实现,当然,这些思路也可以推广开来应用,比如说在BBS中用来管理不同级别的用户权限。权限设计通常包括数据库设计、应用程序接口(API)设计、程序实现三个部分。这三个部分相互依存,密不可分,要实现完善的权限管理体系,必须考虑到每一个环节可行性与复杂程度甚至执行效率。我们将权限分类,首先是针对数据存取的权限,通常有录入、浏览、修改、删除四种,其次是功能,它可以包括例如统计等所有非直接数据存取操作,另外,我们还可能对一些关键数据表某些字段的存取进行限制。除此,我想不出还有另外种类的权限类别。完善的权限设计应该具有充分的可扩展性,也就是说,系统增加了新的其它功能不应该对整个权限管理体系带来较大的变化,要达到这个目的,首先是数据库设计合理,其次是应用程序接口规范。我们先讨论数据库设计。

权限表及相关内容大体可以用六个表来描述,如下: 
1 角色(即用户组)表:包括三个字段,ID,角色名,对该角色的描述; 
2 用户表:包括三个或以上字段,ID,用户名,对该用户的描述,其它(如地址、电话等信息); 
3 角色-用户对应表:该表记录用户与角色之间的对应关系,一个用户可以隶属于多个角色,一个角色组也可拥有多个用户。包括三个字段,ID,角色ID,用户ID; 
4 限制内容列表:该表记录所有需要加以权限区分限制的数据表、功能和字段等内容及其描述,包括三个字段,ID,名称,描述; 
5 权限列表:该表记录所有要加以控制的权限,如录入、修改、删除、执行等,也包括三个字段,ID,名称,描述; 
6 权限-角色-用户对应表:一般情况下,我们对角色/用户所拥有的权限做如下规定,角色拥有明令允许的权限,其它一律禁止,用户继承所属角色的全部权限,在此范围内的权限除明令禁止外全部允许,范围外权限除明令允许外全部禁止。该表的设计是权限管理的重点,设计的思路也很多,可以说各有千秋,不能生搬硬套说某种方法好。对此,我的看法是就个人情况,找自己觉得合适能解决问题的用。 

先说第一种也是最容易理解的方法,设计五个字段:ID,限制内容ID,权限ID,角色/用户类型(布尔型字段,用来描述一条记录记录的是角色权限还是用户权限),角色/用户ID,权限类型(布尔型字段,用来描述一条记录表示允许还是禁止) 

好了,有这六个表,根据表六,我们就可以知道某个角色/用户到底拥有/禁止某种权限。 

或者说,这么设计已经足够了,我们完全实现了所需要的功能:可以对角色和用户分别进行权限定制,也具有相当的可扩展性,比如说增加了新功能,我们只需要添加一条或者几条记录就可以,同时应用程序接口也无须改动,具有相当的可行性。但是,在程序实现的过程中,我们发现,使用这种方法并不是十分科学,例如浏览某个用户所拥有的权限时,需要对数据库进行多次(甚至是递归)查询,极不方便。于是我们需要想其它的办法。使用过Unix系统的人们都知道,Unix文件系统将对文件的操作权限分为三种:读、写和执行,分别用1、2、4三个代码标识,对用户同时具有读写权限的文件被记录为3,即1+2。我们也可以用类似的办法来解决这个问题。初步的想法是修改权限列表,加入一个字段:标识码,例如,我们可以将录入权限标识为1,浏览权限标识为2,修改权限标识为4,删除权限标识为8,执行权限标识为16,这样,我们通过权限累加的办法就可以轻易的将原本要分为几条记录描述的权限放在一起了,例如,假定某用户ID为1,库存表对应的限制内容ID为2,同时规定角色类型为0、用户类型为1,我们就可以将该用户具有录入、浏览、修改、删除库存表的权限描述为:2,15,1,1。 

确实很简单,不是吗?甚至还有更过激的办法,将限制内容列表也加上一列,定义好标识码,这样,我们甚至可以用简单的一条记录描述某个用户具有的对全部内容所具有的全部权限了。当然,这样做的前提是限制内容数量比较小,不然,呵呵,2的n次方递增起来可是数量惊人,不容易解析的。 

从表面上看,上述方法足以达到实现功能、简化数据库设计及实现的复杂度这个目的,但这样做有个弊端,我们所涉及的权限列表不是相互独立而是互相依赖的,比如说修改权限,其实是包含浏览权限的,例如,我们可能只是简单的设置用户对库存表存取的权限值为录入+修改+删除(1+4+8=13),但事实上,该用户具有(1+2+4+8=15)的权限,也就是说,在这种方案中,13=15。于是当我们调用API询问某用户是否具有浏览权限时,就必须判断该用户是否具有对该数据表的修改权限,因此,如果不能在程序中固化权限之间的包含关系,就不能利用应用程序接口简单的做出判断。但这与我们的目的“充分的可扩展性”矛盾。 

这个问题如何解决?我想到了另外一种设置标识码的方法,那就是利用素数。我们不妨将录入、浏览、修改、删除、执行的基本标志码定为2,3,5,7,11,当遇到权限互相包含的时候,我们将它的标识码设定为两个(或多个)基本标志码的乘积,例如,可以将“修改”功能的标志码定为3*5=15,然后将所有的权限相乘,就得到了我们需要的最终权限标识值。这样,我们在询问用户是否具有某项权限的时候,只需要将最终的值分解成质因子,例如,我们可以定义一个用户具有录入+修改+删除库存表的权限为 2*15*7=2*3*5*7,即表示,该用户具有了对库存表录入+浏览+修改+删除权限。 

当然,对权限列表我们使用上述方法的前提是权限列表记录条数不会太多并且关系不是十分复杂,否则,光是解析权限代码就要机器忽悠半宿:) 

我希望以上的分析是正确且有效的(事实上,我也用这些的方法在不止一套系统中实现),但无论如何,我觉得如此实现权限管理,只是考虑了数据库设计和应用程序接口两部分内容,对于实现,还是显得很费劲。因此,我恳请有过类似设计、实现经验的同志们提出建设性的意见和修改建议。  
先说第一种也是最容易理解的方法,设计五个字段:ID,限制内容ID,权限ID,角色/用户类型(布尔型字段,用来描述一条记录记录的是角色权限还是用户权限),角色/用户ID,权限类型(布尔型字段,用来描述一条记录表示允许还是禁止) 

好了,有这六个表,根据表六,我们就可以知道某个角色/用户到底拥有/禁止某种权限。 

或者说,这么设计已经足够了,我们完全实现了所需要的功能:可以对角色和用户分别进行权限定制,也具有相当的可扩展性,比如说增加了新功能,我们只需要添加一条或者几条记录就可以,同时应用程序接口也无须改动,具有相当的可行性。但是,在程序实现的过程中,我们发现,使用这种方法并不是十分科学,例如浏览某个用户所拥有的权限时,需要对数据库进行多次(甚至是递归)查询,极不方便。于是我们需要想其它的办法。使用过Unix系统的人们都知道,Unix文件系统将对文件的操作权限分为三种:读、写和执行,分别用1、2、4三个代码标识,对用户同时具有读写权限的文件被记录为3,即1+2。我们也可以用类似的办法来解决这个问题。初步的想法是修改权限列表,加入一个字段:标识码,例如,我们可以将录入权限标识为1,浏览权限标识为2,修改权限标识为4,删除权限标识为8,执行权限标识为16,这样,我们通过权限累加的办法就可以轻易的将原本要分为几条记录描述的权限放在一起了,例如,假定某用户ID为1,库存表对应的限制内容ID为2,同时规定角色类型为0、用户类型为1,我们就可以将该用户具有录入、浏览、修改、删除库存表的权限描述为:2,15,1,1。 

确实很简单,不是吗?甚至还有更过激的办法,将限制内容列表也加上一列,定义好标识码,这样,我们甚至可以用简单的一条记录描述某个用户具有的对全部内容所具有的全部权限了。当然,这样做的前提是限制内容数量比较小,不然,呵呵,2的n次方递增起来可是数量惊人,不容易解析的。 

从表面上看,上述方法足以达到实现功能、简化数据库设计及实现的复杂度这个目的,但这样做有个弊端,我们所涉及的权限列表不是相互独立而是互相依赖的,比如说修改权限,其实是包含浏览权限的,例如,我们可能只是简单的设置用户对库存表存取的权限值为录入+修改+删除(1+4+8=13),但事实上,该用户具有(1+2+4+8=15)的权限,也就是说,在这种方案中,13=15。于是当我们调用API询问某用户是否具有浏览权限时,就必须判断该用户是否具有对该数据表的修改权限,因此,如果不能在程序中固化权限之间的包含关系,就不能利用应用程序接口简单的做出判断。但这与我们的目的“充分的可扩展性”矛盾。 

这个问题如何解决?我想到了另外一种设置标识码的方法,那就是利用素数。我们不妨将录入、浏览、修改、删除、执行的基本标志码定为2,3,5,7,11,当遇到权限互相包含的时候,我们将它的标识码设定为两个(或多个)基本标志码的乘积,例如,可以将“修改”功能的标志码定为3*5=15,然后将所有的权限相乘,就得到了我们需要的最终权限标识值。这样,我们在询问用户是否具有某项权限的时候,只需要将最终的值分解成质因子,例如,我们可以定义一个用户具有录入+修改+删除库存表的权限为 2*15*7=2*3*5*7,即表示,该用户具有了对库存表录入+浏览+修改+删除权限。 

当然,对权限列表我们使用上述方法的前提是权限列表记录条数不会太多并且关系不是十分复杂,否则,光是解析权限代码就要机器忽悠半宿:) 

我希望以上的分析是正确且有效的(事实上,我也用这些的方法在不止一套系统中实现),但无论如何,我觉得如此实现权限管理,只是考虑了数据库设计和应用程序接口两部分内容,对于实现,还是显得很费劲。因此,我恳请有过类似设计、实现经验的同志们提出建设性的意见和修改建议。  
其实核心思路就是:
1.用户资料不删除,这个是前提,毕竟在企业的发展过程中,一个好的系统是要和其他系统要留接口的,用户的资料将是“人力资源管理系统”、“财务系统”等系统的一个基本资料,当然这些有可能要从其他系统内继承,所以,一个好的系统,这个必须是前提。
2.既然有上面前提,那么,权限的分派和管理就显的非常重要,上面的说的已经很清楚。
我的思路就是,首先要考虑系统的接口,然后要根据这个接口来产生一个权限和角色的分配,那么这样的系统通过“状态定义--自己定义的”来使自己的系统更加的稳健。
角色,就是一个用户组,用于资料共享;
你所说的情况,其实,是限定于某一个人单独可以看到的资料;
一般用户管理是采取角色与用户共存,即在资料的权限设置里面同时有用户组和用户标记。

资料既可以由用户组内所有用户共享,也可以由某些特定的人共享
这个问题我也是第一次感觉到比较困难,以前从没有使用过角色这个设置,不过现在越来越感觉应该设置这个了.如果系统不大,又要使用这个,最好不要出现手工分配角色的维护,而用系统自己维护.
ayine(原振侠) 分析得不错,权限设计的问题也应该算是一门学问了。这个帖子我收藏了。

  学习学习。upup。
没想到大家讨论得这么热烈,请大家继续!!!
Mark.up.
TOP10优秀微信开发商随后揭晓 2014微信开发者大会开幕在即 8月12日:PC鼻祖IBM 5150迎来33周年 平板创作3D展现:蒙特利尔大学发明Hyve-3D设计系统 Quick Charge技术解析:关于手机快速充电的那些事儿 性能分析十八招,你用哪一招? 流程在企业内的作用及成熟度 Gartner:至2017年Chromebook销量将增2倍 后稀缺时代思考:机器横行下的人类夹缝求生 TIOBE 2014年8月编程语言排行榜:Swift跌出Top 20 精华回顾!历届MDCC大会精彩演讲与议程汇总 《近匠》Fancy3D:亿级游戏背后的轻量级引擎 假如李小龙是程序员…… Docker已扎根新一代PaaS 三星或发布首款头戴式VR设备Project Moonlight 英特尔亚太研发总经理何京翔:数据化时代背后的智慧 云络网络科技CEO Steve Mushero:游戏行业的云运维 腾讯游戏运营管理中心总监刘栖铜:腾讯游戏云的理想与实践 一号专车产品总监曹景辉:LBS应用仍有无限的创新空间 昆仑游戏总裁张益豪:做好中国游戏的海外代理 游族首席运营官陈礼标:重点打造全球化IP 我是怎么利用微信月收入三万以上的! 我的Y Combinator黑客马拉松之感! 最炫HTML5 JavaScript框架Famo.us融资2500万美元 看板先驱David J. Anderson:看板方法拉动互联网时代敏捷变革 《近匠》增强现实开发团队LegendTech:AR技术现已加入15元豪华午餐 微软新技术:简单修改,手机摄像头摇身变3D深度相机 Black Hat USA安全隐患盘点及黑客奥斯卡颁奖 MDCC免费展位报名火热!数量有限,征集进行中 迪游信息科技CEO张晓雷:中日游戏面面观 百余款智能电视创意类应用参赛角逐 Top13 App新鲜出炉! 微信公众平台开发——如何保证access_token长期有效? XP、2000启动后有一段“休克”期应该怎么解决? 一个奇怪的问题:如何注册BCB6??? servlet怎么得到访问者的ip地址?或者是从那个页面链接过来的? 高手留步 ! 怎样取代系统默认行为 ? 求阶乘的代码,,书上抄的,怎么又有错呀, mysql 3.x.x好像不支持事务,这么办啊? --------用联通手机的兄弟请进来领分!!!-------(续) socket通讯与操作系统有关系吗? 程序员里有多少买了车的? 请高手帮忙 有什么好的VC打包工具吗? 请问如何让程序自动运行?并且如何取消程序的自动运行? 两个问题求助~~~~~~~~~~~~~~~~~~~~ 关于同一台计算机两个id的邮件配置问题 在一个datawindow中放了多个button,如何针对每一个Button进行编程? 派生类的三种继承方式 高薪诚聘 C# 程序员 一个有关失效率的问题,请大侠们指点! sun的j2ee sdk 1.3.1不能在2000server上运行?? [黑色幽默]唉 难道这就是IT人的未来? 几个项目开发问题,有经验者请进。 關於用vb取sybase數據的問題 如何实现呢?请教各位高手,高高手。。。 急。死。问一下UDP的写的一个NETICQ的使用方法.在线等 初学JSP,在用JavaBean创建了一个数据库连接的程序,但是在JSP中用<jsp:useBean>使用JavaBean时出现了问题。 我是新手,一个工程换目录了需要改哪些地方? listview控件网格的高度如何设置啊? 请问TFORM 中的onActivate 事件是在什么时候触发 help 关于菜单 為什麼服務器中的NETLOGON(用戶登錄)服務老是出現錯誤呢? 我的PIII 667 现在启动时自检为333E,然后进入CMOS,提示CPU频率不对,这是什么原因? 分不多了,帮我看看这个短小超难的SQL怎么写 unsigned char * 和 object pascal 中的什么是等价的?pchar 是无符号的么? 那位大哥帮看看 这句为什么总编译不过去 xiexie trectangle类型为什么总说我没有定义?在线等…… 为何收不到邮件的BODY部分? platform builder platform 时出错 有关SQLJ的问题 有谁可以提供几个关天isa server的好认坛? 在计划任务中编写t_sql语句的字符长度限制问题! JAVA 图形化编程如何控制组件的大小和位置!!! 如何用ASP上传文件到数据库、读取并下载? 100分求教我的ActiveForm出现access violation at address...的问题(急急急) 最真诚的祝福大力和璇玑! 控制文件损坏,恢复是碰到了难点--ora-00600错误。怎么办??? 请问WebBrowser对象在弹出式窗口中是不是不能用? 关于CListCtrl的一个问题 多个cpp可以有多个main吗? 怎么样在不同分辨率下显示同一网页不变形? 卡拉OK厅中的男人和女人们(zt) 怎么在一个接口中调用另外一个接口 已知CI的平均相对原子质量为35.5,求23Na和35CI、37CI等微粒组成的29.25gNaCI晶体汗37CI多少克?23Na:表示它的相对原子质量是23. 人物下的底光怎么得大神们帮帮忙 英语翻译英文翻译 嫌光的种子有哪些?一直以为细小的种子都可以直接撒下去播种,无需覆土,刚刚知道原来有的种子是嫌光的,请问都有哪些是嫌光的?我拨了矮牵牛、夏堇、太阳花、凤仙、薄荷,这几种都不嫌光 There()a Patty yesterday 7天背会一本英语书真的很好嘛?有没有参加过的介绍下? 7天背会一本英语书针对的是多大的孩子参加的? 把物体化为粒子在通过虫洞的隧道超越光的速度需要多大的能量与装置? 水银颗粒有多大?今天找东西时,在教室里捡到了一个类似钢珠的颗粒,表面有点生锈.会是水银颗粒吗?水银颗粒一般有多大,特征是什么? 一张白纸会隐藏什么含义?无 迪迦奥特曼哪一集用了大小变换光束?就是对付地底下的大老鼠的呢一级 是第几集? 意总理会见美国务卿 要求解释监听意通租客伪造房产证卖房 新\"房东\"不菲总统再称菲政府不会就香港人质事件致意总理会见美国务卿 要求解释监听意通韩国政府敦促日方删除主张争议岛屿主权中方对苏丹总统访问南苏丹并达成多项共王晨会见日本日中友协代表团韩国要求日本删除主张独岛主权视频亚太地区主要股市多数下跌浙江再增1例人感染H7N9禽流感病例杭州“越野哥”当街救人勇退三劫匪 民机场10分钟到会展新城里皮将缺席恒大亚冠生死战10米台 继续为家乡争光企业经营状况须公示失信将入“黑名单”与房祖名一起被抓消防员离火炬盆仅四米苏醒:陕西人的性格都比较硬民生银行80亿元助力城商合作社工商登记改革催热西安创业潮陕将张坤领衔中国散打决战亚运61岁钟镇涛迎娶42岁女友命运缔造者逆天乱世缘网游之现世轮回青城仙门锐气风暴纵横天之都主宰命运风流魔徒龙腾成长系统逆子乱臣使命召唤之大炮兵主义哪吒庙旅游清真大寺旅游五塔寺旅游青城公园旅游红军岩通天河旅游椰子大观园旅游楠溪江狮子岩桃花源竹筏漂流旅游岭上人家旅游林坑古村旅游沈阳鸟岛旅游绿岛旅游度假区旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘