日期:2014-05-19  浏览次数:20665 次

高分求设计思路?在线等待...
关于如何给用户授权的问题:
用户的权限分以下几类:
专业权限:如会计、保卫、信贷等专业。
                  (专业:可以增、删、改)  
检查项目权限:如2007年会计专业大检查、信贷大检查、2007年所有专业大检查等。
                            (检查项目:可以增、删、改)

..................................................................
能否这样设计表:
一、用户表
用户名     专业权限                   检查项目权限
张新         1,5,12,26           26012,26231,27001
王军         2,3                           26012,28003
.
.
.
二、专业表
专业代码     专业名称
1                   会计
2                   信贷
3                   保卫  
.
.
.
三、检查项目表
检查项目代码       检查项目名称
26012                     信贷大检查
26231                     会计大检查
28003                     内控管理大检查
.
.
.
用户登录后显示两个下拉框
用户可选择自己拥有权限下的“专业”和“检查项目”,但是这种都用逗号隔开的不知道如何显示在下拉框中,请帮忙,有代码说明更好。
如果上面的方案不够好,请教更好的方案,多谢了!!

------解决方案--------------------
帮顶
------解决方案--------------------
但是这种都用逗号隔开的不知道如何显示在下拉框中 ,我只能告诉你可以显示, 要是不可以,你先转换下就可以了。
------解决方案--------------------
试试,不知道你说的是什么意思,我琢磨着你因该是要把一个字符串分割开来把,比如:
string str= "1,5,12,26 ";
string[] strs=null;
strs=str.Split( ', ');
结果如下:
strs(0)= "1 ";
strs(1)= "5 ";
strs(2)= "12 ";
strs(3)= "26 ";
然后你可以把这些字符串放到下拉列表中去了
------解决方案--------------------
接分,呵呵
------解决方案--------------------
"1,5,12,26,28,..,..,..,... "有N个 ", " 就会生成N+1 字符串,你按照你自己当初设计的时候
的思路去取你想要的字符串,另外你问的”查询同时拥有 "5 "专业权限和 "26012 "检查权限的所有用户“的问题是你的SQL语句的问题,你使用SQL里面的模糊查询即可搞定,具体的语句自己去写,模糊查询你因该会把
------解决方案--------------------
我在網上看到的一篇文章:
关于权限设计的探讨

http://www.vfp.cn/sdss/dispbbs.asp?boardID=2&ID=8930&page=1
基于用户、角色、权限的概念可以彻底解决以上问题.

权限:用户对一个功能点能做的操作,包括对一个页面的打开,对一个业务逻辑的调用;

用户:用户名/口令字构成的一对;

角色:权限的集合。

相互之间的对应关系:用户和权限之间没有直接对应关系;一个用户可以扮演多个角色,多个用户可以扮演相同的角色;一个角色对应了由若干个权限组成的集合,某个权限可以分属多个不同的角色。
把以上三个概念实现在你的数据库中作为应用的基础。

在使用的时候,应该让所有的用户通过同一个登录页面登录;
登录页面对用户的口令字/用户名进行验证,如果合法的话在Session对象的集合里面写上他(她)的角色;
在使用任何一个功能点之前验证用户的权限是否足够,从Session对象里面获取他(她)的角色,从数据库里面查看他(她)是否有足够的权限。

以上就是解决类似问题的通用解决办法。
如果你的用户使用USB Encripted Token之类的加密工具,他(她)的角色就可以写在他的USB Token里面,那样子的话就更安全。
-----------------
前提:
1、登录者是已经注册的用户
2、有设置权限范围(即是将被管理的对象)
如: 公司的每个部门,系统的每个模块,每级栏目等。

设置:
1、被管理对象,
按类设置被管理对象的值(唯一性),类别中再设小类。
如,集团为1,集团下公司为01,集团下工厂为02
公司财务部相对应的唯一值为: 01001;公司技术部的值为:01002
工厂财务部相对应的唯一值为: 02001;工厂营销部的值为:02002

2、管理者
给管理者赋权限:想给他管理公司财务部,在该用户的相关字段Rank(假设)写入01001;如果同时管理公司财务部和公司技术部那么Rank为01001,01002(多选);多个权限类推。 如果管理整个公司则Rank为01