请教C/S +MYSQL的一个管理系统的设计问题 100分相送

Brightzliu 2009-07-09 10:50:29
########################################################################################################################################################
我想在一个C/S+MySQL+VC6下开发一个管理系统,准备通过RBAC来进行权限管理。
比如一个用户在客户端点击一个查询学生信息按钮操作,然后将查询结果返回到客户端。在服务端只是记录所有当前登陆用户的名字、客户端对应IP、操作时间以及进行的操作
下面是我的想法:
1.通过客户端直接连接到服务端数据库,进行查询,此时是不是根据数据库中表的关系进行用户验证呢?比如有以下表:
a.用户表
b.角色表
c.权限表 //对于该表,有个问题:一个系统有很多子系统,管理不同的实体信息,对于不同实体信息,都会有增删改查操作,那么是每个实体对应一个权限表么?
d.用户-角色表
e.角色-权限表
f.学生信息表
那么首先可以通过用户表验证用户是否合法(即验证用户和密码是否匹配),然后通过用户-角色表看该用户属于哪种角色,然后根据角色-权限表查看该用户具有那些权限,如果一

切OK的话,才能执行sql语句查询的吧?然后通过VC里面的控件接收返回的信息。

2.RBAC的原理已经知道了,但是不知道在程序里面怎么去设计,只是需要在数据库中建立好表之间关系就可以了么?被查询的信息比如上面的学

生信息,不需要在代码中给它写个类吧?

3.服务端想知道是哪个用户登陆了,IP地址、进行了哪些操作以及操作时间。我是否需要定义一个类似的数据结构:用于用户端和服务端之间send/recv
struct loginInfo
{
char* name;//用户名
Time loginTime;//操作时间
char* action; //用户操作
}

以便在服务端中查看如下形式的信息:
序号 用户名 IP地址 操作时间 操作
1 aaa 192.168.1.10 2009-09-09 09:10:10 登陆
2 aaa 192.168.1.10 2009-09-09 09:15:10 查询学生信息
3 aaa 192.168.1.10 2009-09-09 09:16:10 添加了学生信息
3 bbb 192.168.1.20 2009-09-09 09:18:10 登陆
4 bbb 192.168.1.20 2009-09-09 09:19:13 删除学生信息
5 aaa 192.168.1.10 2009-09-09 09:20:10 查询学生信息
....


4.每登陆一个用户,我就需要在服务端上新建一个线程与其通信,主线程用来监视端口。

5.哪位大侠能帮忙推荐一些和我做的有关的资料,我看的资料大部分都是数据库和应用程序在同一个机器,即单机版那种。没有查看到C/S+数据库的例子。
因为第一次做这样的东西,没有经验,不知道预期会遇到什么问题,以及还有哪些问题没有考虑清楚。请各位帮忙指点一下,谢谢了。

########################################################################################################################################################
...全文
73 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Brightzliu 2009-08-09
  • 打赏
  • 举报
回复
我还问一个问题吧,在进行RBAC权限验证时候,如何去验证呢?
具体代码怎么写啊?
jyh_baoding 2009-07-30
  • 打赏
  • 举报
回复
帮顶一个
hhwei1985 2009-07-28
  • 打赏
  • 举报
回复
up
fandouC 2009-07-28
  • 打赏
  • 举报
回复
我也在想做个C/S结构的东东,现在的想法是用CSocket实现通信。
以前用C#做过,C#里面要简单些,可以用.NTE 远程处理技术实现。
pzhuyy 2009-07-23
  • 打赏
  • 举报
回复
这跟B/S的权限有什么不一样吗?看看人家论坛怎么做的?
bohut 2009-07-23
  • 打赏
  • 举报
回复
1.用户信息表:
user_id pwd role_id
2.角色定义表
role_id func_id
3.功能定义表
func_id name

设置好3个表的主外键关系,就可以开始写sql了
比如你的查询功能可以在表3中插入一条记录 '001' '查询信息'
表2中对应的记录 为 '001' , '001' --表示id为001的role具备操作func_id 为001的权限
表1中有条记录为 '001','123456','001',表示id为001的user具备role_id为001的角色
Sql:
select * from 表1 as a,表2 as b,表3 as c where a.role_id = b.role_id and b.func_id = c.func_id and c.name = ‘查询信息’and a.user_id = '用户输入内容' and a.pwd = '用户输入内容'。
如果能查到结果,验证用户登录信息和权限的问题都解决了.
Brightzliu 2009-07-15
  • 打赏
  • 举报
回复
怎么这个问题就没下文了啊。 我估计吧csdn里面和RBAC相关的帖子都看了,都没有找到自己要的答案。。

Brightzliu 2009-07-09
  • 打赏
  • 举报
回复
恩,我知道MySQL支持远程访问,我的问题主要还是集中在1和2吧。

deng335995 2009-07-09
  • 打赏
  • 举报
回复
远程访问数据库,恩,没做过,自己找找吧.用CSocket做吧,要考虑测试环境的搭建,弄不好会郁闷死人了.
oyljerry 2009-07-09
  • 打赏
  • 举报
回复
MYSQL支持远程访问,只要服务器开放对应的服务,端口等,然后连接字符串中设置ip等来连接
http://www.haishui.net/view.php?id=483&tid=30

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧