讨论在软件开发中用户权限的设计问题
在应用系统中用户的权限控制非常的重要,在设计方面也比较难。
例如:在一个应用系统中有人员、有群组,一个人员可以在多个群组中(如企业中人员的兼职),一个群组又可以包含多个子群组(如一个部门有n个小组),当系统中的一个人员发公告时,他可能会选择几个群组和几个人员,那么相应的这几个群组中的所有人员及子群组中的人员和发公告时选择的人员都应有阅读的权限;那么在公告存入数据库(sql server)后,当用户登陆系统时,如何根据当前登陆用户的权限从数据库中将他有权阅读的公告查询出来,当数据量大时(数据库仅sqlserver或mysql),如何提高查询的效率。
[解决办法]
参考oracle的权限系统
[解决办法]
同问。
[解决办法]
根据每个人的角色,分配个人的权限!
[解决办法]
每个消息存放两个信息,组id,和用户id,其中组id和用户id都可以为空
如果组id为空,表示发给指定人
如果用户id为空,则表示发给这个组
然后根据登录用户的id,已经用户所在的组id,就可以得出全部的信息
数据库中建立组id索引和用户id索引即可
[解决办法]
首先设定一个前提,就是同级群组不允许嵌套,一个子群组只能属于一个父群组。也就是说群组划分要是一个树型结构的
然后在群组编号上设定规则,第一级群组用3位,第二集群组用6位......比如:市场部 001,财务部002,其中市场部包含 北方市场 001001,南方市场 001002......
这样一个用户登陆上来以后,先获得他所属的所有群组,再根据规则拆分得到所有的父群组。
如:一个用户属于群组 001001 , 002001003 和 002002,你就可以拆分出 001,002,001001,002001,002002,002001003,这样你只要查询对这些群组开放的公告和对这个用户ID开放的公告就行了
[解决办法]
授权操作时用组处理,减化操作;保存授权数据时到用户
[解决办法]
这个是要根据需求来的,但相信只要掌握主流的就可以应付其它的
角色,权限,用户
三者之间都是多对多的关系(多对多会在两表之间产生一个映射表)
[解决办法]