按照客户的要求,exe只包含菜单,其它对数据的处理全部在dll里进行,并且dll是放在服务器上,各用户通过远程调用。
请问,如果所有的用户都调用相同的程序,那么如何判断多个用户id的使用权限呢,并且怎么知道哪个人对应哪个用户id呢?麻烦大家帮忙,谢谢!
7 个解决方案
#1
使用数据库或配置文件给功能模块加标志,如果有用户已进入模块则标志为1,其他用户进入模块前先检查标志,如果为1则只有读权限。
#2
给功能模块加标志位,这个我目前也是这样做的,不过我还想知道,所有用户调用同一个程序时,这一个程序,可以获得多个用户id吗,如果可以,怎么判断每个用户对应的id呢
#3
#4
用户表(userid,username...) pk: userid
功能表(functionid,functionname,isactive) pk:functionid,isactive 表示该功能是否活动
权限表(userid,functionid) pk:userid + functionid
找出某个用户非活动的权限:
select a.* from 功能表 as a inner join 权限表 as b on a.functionid = b.functionid and a.isactive = 0 where b.userid = '***'
功能表(functionid,functionname,isactive) pk:functionid,isactive 表示该功能是否活动
权限表(userid,functionid) pk:userid + functionid
找出某个用户非活动的权限:
select a.* from 功能表 as a inner join 权限表 as b on a.functionid = b.functionid and a.isactive = 0 where b.userid = '***'
#5
需要注意的是在用户对任何模块的访问之前要更新功能表。
#6
有个思路是在数据库中建两个临时表,一个记录所有[模块信息],一个记录[模块使用信息]。
当用户查询或者编辑模块时,就搜索[模块使用信息表]。看被使用的模块当前状态是多少,是正在查询,还是正在编译,谁在查询等等。
当用户查询或者编辑模块时,就搜索[模块使用信息表]。看被使用的模块当前状态是多少,是正在查询,还是正在编译,谁在查询等等。
#7
不好意思,可能我没有表达清楚意思,我现在困惑的是,比如:
用户A使用ID 001 调用服务器上的程序;
同时用户B使用ID 002 调用服务器上的同一个程序;
那么该程序得到的ID是什么,如果2个都能得到,那么怎么知道A的ID是001,B的是002
用户A使用ID 001 调用服务器上的程序;
同时用户B使用ID 002 调用服务器上的同一个程序;
那么该程序得到的ID是什么,如果2个都能得到,那么怎么知道A的ID是001,B的是002
#8
郁闷 ,这个也要用程序实现啊。
要想得到用户A,B的ID,你需要有个用户表,里面存储用户名,用户ID,密码什么的。
当用户调用程序时,查询此用户ID就可以了。
或者建个用户对象。
class 用户
{
private String 用户名,用户ID
用户名{
get {}
set {}
}
用户ID{
get {}
set {}
}
...
}
上面是用C写的。你可以转成VB的。上面有两个属性,一个是用户名属性,一个是用户ID属性。
当用户调用程序时,就可以通过调用属性 [用户ID]得到了。
要想得到用户A,B的ID,你需要有个用户表,里面存储用户名,用户ID,密码什么的。
当用户调用程序时,查询此用户ID就可以了。
或者建个用户对象。
class 用户
{
private String 用户名,用户ID
用户名{
get {}
set {}
}
用户ID{
get {}
set {}
}
...
}
上面是用C写的。你可以转成VB的。上面有两个属性,一个是用户名属性,一个是用户ID属性。
当用户调用程序时,就可以通过调用属性 [用户ID]得到了。
#1
使用数据库或配置文件给功能模块加标志,如果有用户已进入模块则标志为1,其他用户进入模块前先检查标志,如果为1则只有读权限。
#2
给功能模块加标志位,这个我目前也是这样做的,不过我还想知道,所有用户调用同一个程序时,这一个程序,可以获得多个用户id吗,如果可以,怎么判断每个用户对应的id呢
#3
#4
用户表(userid,username...) pk: userid
功能表(functionid,functionname,isactive) pk:functionid,isactive 表示该功能是否活动
权限表(userid,functionid) pk:userid + functionid
找出某个用户非活动的权限:
select a.* from 功能表 as a inner join 权限表 as b on a.functionid = b.functionid and a.isactive = 0 where b.userid = '***'
功能表(functionid,functionname,isactive) pk:functionid,isactive 表示该功能是否活动
权限表(userid,functionid) pk:userid + functionid
找出某个用户非活动的权限:
select a.* from 功能表 as a inner join 权限表 as b on a.functionid = b.functionid and a.isactive = 0 where b.userid = '***'
#5
需要注意的是在用户对任何模块的访问之前要更新功能表。
#6
有个思路是在数据库中建两个临时表,一个记录所有[模块信息],一个记录[模块使用信息]。
当用户查询或者编辑模块时,就搜索[模块使用信息表]。看被使用的模块当前状态是多少,是正在查询,还是正在编译,谁在查询等等。
当用户查询或者编辑模块时,就搜索[模块使用信息表]。看被使用的模块当前状态是多少,是正在查询,还是正在编译,谁在查询等等。
#7
不好意思,可能我没有表达清楚意思,我现在困惑的是,比如:
用户A使用ID 001 调用服务器上的程序;
同时用户B使用ID 002 调用服务器上的同一个程序;
那么该程序得到的ID是什么,如果2个都能得到,那么怎么知道A的ID是001,B的是002
用户A使用ID 001 调用服务器上的程序;
同时用户B使用ID 002 调用服务器上的同一个程序;
那么该程序得到的ID是什么,如果2个都能得到,那么怎么知道A的ID是001,B的是002
#8
郁闷 ,这个也要用程序实现啊。
要想得到用户A,B的ID,你需要有个用户表,里面存储用户名,用户ID,密码什么的。
当用户调用程序时,查询此用户ID就可以了。
或者建个用户对象。
class 用户
{
private String 用户名,用户ID
用户名{
get {}
set {}
}
用户ID{
get {}
set {}
}
...
}
上面是用C写的。你可以转成VB的。上面有两个属性,一个是用户名属性,一个是用户ID属性。
当用户调用程序时,就可以通过调用属性 [用户ID]得到了。
要想得到用户A,B的ID,你需要有个用户表,里面存储用户名,用户ID,密码什么的。
当用户调用程序时,查询此用户ID就可以了。
或者建个用户对象。
class 用户
{
private String 用户名,用户ID
用户名{
get {}
set {}
}
用户ID{
get {}
set {}
}
...
}
上面是用C写的。你可以转成VB的。上面有两个属性,一个是用户名属性,一个是用户ID属性。
当用户调用程序时,就可以通过调用属性 [用户ID]得到了。