请大家救命阿,这个问题有点棘手.............

radarhp 2003-08-25 01:42:33
我做了一个MFC扩展DLL,想实现类似SESSION的东西,请问如何实现
具体内容:
这个DLL是一个用做权限判断的(多种权限),用户的操作会非常频繁,如果每次用户操作我都从数据库重新读取一次,然后判断效率恐怕很低,现在的想法是一次读取用户的所有权限(保存成类似SESSION),然后用户每次操作就直接比较验证就可以了,不再和数据库打交道。
这个问题我也不知道VC该如何来实现,加上我的VC很次,所以描述问题都用ASP的一些东西来描述了,呵呵,大家别见怪,请大家多指点我了
小弟先谢过了
...全文
36 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
radarhp 2003-08-26
  • 打赏
  • 举报
回复
TO yinzhaohui()
请问能给个例子吗?我说了自己真的vc很次,不好意思了

TO zero100(美在于发现)
谢谢你的思路,可是我没有能力做,理论上感觉可行,水平上感觉做不了

谢谢大家,请继续指点我阿
yinzhaohui 2003-08-26
  • 打赏
  • 举报
回复
一个完整的例子大多了,我只是说一说大概思路(用SOCKET)
1.程序初始化(包括对数据库的打开)
2.在程序中建立一个监听线程(AfxBeginThread或CreateThread都可以)
3.在对应的线程程序中初始化SOCKET(WSAStart(...),sock=socket(...),bind(...)listen(...)
4.while(1)
{
clientsock=accept(...);
如果有连接建立一个服务线程
....
...

}

5.服务线程为建立一个局部的权限结构1.要求用户认证,用户发送认证信息(用户名,密码等的)一次查询数据库把结果放放局部的权限结构(这也就是用户的权限)下面的是用户的请求,用这一个结构来限制用户的操作.
yinzhaohui 2003-08-25
  • 打赏
  • 举报
回复
你只用在第一次用户连接时从数据库中提取这个用户的所有权限数据作为对这个用户服务线程的局部变量,以后用户的没一个请求直接用这个局部变量来判决.
zero100 2003-08-25
  • 打赏
  • 举报
回复
类似于Session,只是保持一个你要的数据吧?
可以使用下面的方式;
1. 增加一个Init的导出函数,把你的Session类的指针作为一个HANDLE返回;
2. 检查时,将HANDLE 作为输入参数传入.
Check(HANDLE hDo,...)
{
CSession *pSession = (CSession *) hDo;
.....
}
3. 为了防止内存leak,你还需要一个Uninit的导出函数. 完成对内存的释放.
这样的做法有一个很大的问题,就是检验输入参数有难度.
luogucai 2003-08-25
  • 打赏
  • 举报
回复
实际上你不用太担心效率问题,你可以在第一次使用的是否连接数据库, 然后并不关闭连接,就可以了,等等Dll退出是再断开连接.

即使每次都进行一次连接断开,也紧紧是第一次比较慢,后面的连接断开都会比较快的.
radarhp 2003-08-25
  • 打赏
  • 举报
回复
除了up就没有点建设性的东西了阿?兄弟们?
flinming 2003-08-25
  • 打赏
  • 举报
回复
up
stcrane1228 2003-08-25
  • 打赏
  • 举报
回复
UP

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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