高分求设计思路?在线等待...
关于如何给用户授权的问题:
用户的权限分以下几类:
专业权限:如会计、保卫、信贷等专业。
(专业:可以增、删、改)
检查项目权限:如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
3、判别权限时,用户Rank字段与被管理对象的相对应的字段进行比较。。。。。
----------------
基于用户、角色、权限的概念可以彻底解决以上问题.
这个太对了!
权限:用户对一个功能点能做的操作,包括对一个页面的打开,对一个业务逻辑的调用;
一般分为这么几种 浏览 查询(对select的划分) 增加 修改(这个包括审定)删除 还有一个级别。
用户:用户名/口令字构成的一对;
通常情况下要做到这么复杂的系统口令和用户名最好都加密 :)
口令最好是 不可逆加密 用户就不能:)
角色:权限的集合。
这里假定有级别 (可以为一数组) 和其它的权限 浏览查询
另外业务跟角色的关系有两种写法 1、由业务上定义某个角色
2、角色对某个业务的处理
上面两个方法大致一样,但是我认为采用1、更好。因为以后业务的变化是经常的。
在使用的时候,应该让所有的用户通过同一个登录页面登录;
登录页面对用户的口令字/用户名进行验证,如果合法的话在Session对象的集合里面写上他(她)的角色;
在使用任何一个功能点之前验证用户的权限是否足够,从Session对象里面获取他(她)的角色,从数据库里面查看他(她)是否有足够的权限。
-------------------------
[解决办法]
你去看看MSDN ;上面说得很清楚,Splist()函数可以按照某个字符将字符串分割成N个字符串啊;后面的权限再多;只要是以 ", "隔开的字符串;它都能分隔开。1,2,3,5,12,16,26,28
会被分割成“1”
“2”
”3“
“5”
“12“
”16“
”26“
”28“组成的字符串;你要哪个就取哪个啊
[解决办法]
http://blog.csdn.net/cnjack/archive/2007/08/05/1726758.aspx
[解决办法]
我前两天刚做完用户管理,和楼主一样的问题.我建议楼主用两个带checkbox的listview来展现权限字符串,通过让用户勾选来达到目的.这涉及到一个展现数据库字符串和用户更改权限后重新更新字符串的问题.前者可以用split方法解决,后者要用循环遍历的方法更新.其中要有一些listview 选中事件的处理.
[解决办法]
取出
页面上判断!!
最直接的方法!!
[解决办法]
数据库设计、
用户表
UserID Username Password
专业表
专业代码 专业名称
1 会计
2 信贷
3 保卫
检查项目表
检查项目代码 检查项目名称
26012 信贷大检查
26231 会计大检查
28003 内控管理大检查
权限代码表
权限代码 权限
1 新增
2 删除
3 读取
4 更改
5 禁止新增
6 禁止删除
7 禁止读取
8 禁止更改
专业权限表
ID UserId 专业代码 权限代码
检查项目权限表
ID UserId 检查项目代码 权限代码
[解决办法]
数据范例如下
用户表
UserID Username Password
1 user1 kkdfjier9i==
2 user2 45hc873h4=
专业权限表
ID UserId 专业代码 权限代码
1 1 1 3
2 1 1 1
3 1 1 2
这样就代表了用户1,专业会计,可以读取,新增,删除。
检查项目权限表也差不多如此。
[解决办法]
jf up 学习
[解决办法]
//专业权限
const long zPower1=0x0000000000000001;//增
const long zPower2=0x0000000000000002;//删
const long zPower3=0x0000000000000004;//改
const long zPower3=0x0000000000000008;//....
//项目权限
const long xPower1=0x0000000000000001;//增
const long xPower2=0x0000000000000002;//删
const long xPower3=0x0000000000000004;//改
const long xPower3=0x0000000000000008;//....
//比如这个 张新 的权限
//专业权限
long zPower;
zPower=zPower1+zPower2;//张新具有增 删权限
if((zPower & zPower1) ==zPower1)
{
//表示有增权限
}
else
{
//...
}
//项目权限
long xPower;
...
一、用户表
用户名 专业权限 检查项目权限
张新 zPower xPower
//这个主要是思路 其他的你自己考虑
[解决办法]
一、用户表
用户名 专业权限 检查项目权限
张新 1,5,12,26 26012,26231,27001
王军 2,3 26012,28003
.
.
.
二、专业表
专业代码 专业名称
1 会计
2 信贷
3 保卫
.
.
.
三、检查项目表
检查项目代码 检查项目名称
26012 信贷大检查
26231 会计大检查
28003 内控管理大检查
.
.
=====================================
数据库这样设计没有问题,挺好的。这里的下拉菜单需要首先从数据库中读取权限信息
example:
数据库读取
专业权限:majorResult= "1,5,12,26,28 "
检查项目权限:projectResult== "1001,1003,1008,1009 "
但是这种都用逗号隔开的不知道如何显示在下拉框中,请帮忙,有代码说明更好。
如果将"张新"专业权限再加一个变成:1,5,12,26,28,该怎么办?
答: string str = majorResult;
string[] strs = str.Split( ', ');
for (int i=0; i < strs.Length;i++ )
cbmajor.Items.Add(strs[i]);//cbmajor代表下拉控件名字
另一个问题是:查询同时拥有 "5 "专业权限和 "26012 "检查权限的所有用户,该怎么办?
答:select * from 用户表 where 专业权限 like "%,5% " and 检查项目权限 like "%,26012% "
//通配符:%多字符 _单字符
如果将"张新"专业权限变成:1,2,3,5,12,16,26,28.还是这个问题,该怎么办?
答:查询条件是分开的,互相不影响
如何取消用户李兰的专业权限: ",1003 " (注意有逗号)
那么李兰的专业权限变为了:1001,1008,1009
答:
string projectResult = "1001,1003,1008,1009 ";
string str = projectResult;
string[] strs = str.Split( ', ');
string delStr = "1003 ";
StringBuilder project = new StringBuilder();
for (int i = 0; i < strs.Length; i++)
{
if (delStr == strs[i])
continue;
else
{
if (i < strs.Length - 1)
{
project.Append(strs[i]);
project.Append( ", ");
}
else
{
project.Append(strs[i]);
}
}
}
string newProjectResult = project.ToString();