我在程序里加了一个成员变量
BOOL m_bLogin;
成功登录m_bLogin=TRUE;
否则=FALSE;
访问其它的url先判断if(!m_bLogin) {回首页!}
(所有的url都写在一个dll里)
可是只要有一个用户成功登录m_bLogin就变成TRUE;然后在其他的电脑输url也可以访问相应的内容,怎样解决这个问题??
BOOL m_bLogin;
成功登录m_bLogin=TRUE;
否则=FALSE;
访问其它的url先判断if(!m_bLogin) {回首页!}
(所有的url都写在一个dll里)
可是只要有一个用户成功登录m_bLogin就变成TRUE;然后在其他的电脑输url也可以访问相应的内容,怎样解决这个问题??
解决方案 »
- 查找一个窗口时遇到的问题
- 为什么微软要公开一个AdjustTokenPrivileges函数呢?
- 为什么C++用类呢?其最终想实现的功能是……?
- 请问怎么设置窗体的属性能使窗体位于所以windows窗体的最上层?
- 关于Release的问题?
- GetDeviceCaps(hdc,HORZSIZE)和GetDeviceCaps(hdc,VERTSIZE)的返回值?
- 新手提问,关于注册表,多多指教,先谢了:——》
- 关于SetCommTimeouts()函数的使用
- MFC最低级的打印功能
- Debug模式可用,但Release 模式却不可用,
- 一个串口编程的问题,热心人帮帮忙
- 有人了解北京微视凌志图像公司吗?
建议查查MSDN
如果关闭,只有和你说的一样重启动了,不知道可不可以强制修改
另外一种是临时性的,跟随IE生命周期的COOKIE,用一般软件是无法查看到的。要检查验证,可以试试第一种COOKIE
不过这种方法有漏洞,可以在客户端通过不正当方法修改这种cookie,从而达到跳过验证。
唯一的补救办法就是在关键性的数据库操作时,重新从COOKIE读取数据,并重新验证。
2,自己模拟一个SESSION过程,SESSION过程很简单,楼主可以在网上找一下SESSION的工作原理。
可以试一下第二种COOKIE,也就是临时COOKIE,不过安全性也无法保证。推荐:自己模拟一个SESSION
所以从这个角度来说如果浏览器不支持cookie的话那么也不能支持这种应用了.
isapi没有现成的办法来帮你做这项工作,所以你可以自己来作,跟据用户登陆的时间,用户名等,生成一个加密的串,然后用AddHeader(pCtxt,"Set-Cookie: yourstring"); 把它加到给客户端的输出当中.
以后用户再提交的话就通过检查头里面的串是否正确,当前时间和你记录的登陆时间(或者上次访问的时间) 是否满足你的需要.如果满足,就认为用户登陆过了.
另外mfc给你自动生成的extensions类中的成员变量对于所有用户都是一样的.你在这里可以保存全局的设置之类的,而对于用户的信息,你需要保存到局部的结构或者类中,并且在调用各个函数的时候传递它的值或者指针另外isapi很难调试.呵呵
但是比较难调试,而且一旦出错会导致整个网站都down掉
3m2u(SameToYou)说得对你可以使用ie临时的cookie.这里并不要求保存cookie.所以不用担心客户端的Set-Cookie: name=test;btw,我还是建议用一个模拟的session管理模块
你可以写一个专门维护session的后台程序,由isapi来读取.用户登录成功后就把session-id写入到set-cookie里,根据session-id来向维护session的后台程序要这个用户有关的session值就可以了.
问个问题set-cookie设置的东西ie不会保存到硬盘上?关了ie以后就没有了?
session是什么原理?像我说的发特征值放到set-cookie里,同时也放到服务器(小的临时文件或者数据库?)中吧
Amadalic 你失业时间太长了吧?骗人骗不长久滴,不要这么郁闷,小心吐血!
奇怪? Amadalic 你莫不是受了什么精神刺激有毛病啊?...没时间不谈技术不再奉陪!
"可是只要有一个用户成功登录m_bLogin就变成TRUE;然后在其他的电脑输url也可以访问相应的内容,怎样解决这个问题??"
解决这个问题思路好象不对,就个人经验了说,只要是成功登录过的用户,由于在你的m_bLogin里已经变成了TRUE状态,所以直接调用URL还是可以访问已经成功访问过的内容。
但对于没有通过第一次验证的用户相对是比较安全的,一般不会访问到你的被保护内容,这样的描述应该符合你碰到的情况。
要解决该问题,还应该要跳出Cookie+Session的传统套路,因为单靠任何一个因数都是不可能解决你的问题的。建议从其他角度着手可能会更有效果。
问个问题set-cookie设置的东西ie不会保存到硬盘上?关了ie以后就没有了?
session是什么原理?像我说的发特征值放到set-cookie里,同时也放到服务器(小的临时文件或者数据库?)中吧
---Set-Cookei时,如果不指定失效时间,就不会写到硬盘上的.如果客户端不支持cookie,那你用jsp或asp之类也没有办法实现session的,你可以得到http的协议头看看就明白了session是根据客户端的的特征,生成一个唯一的标识,而后,可以通过维护这个标识来为这个客户端存取一些特别 的数据.当然了,你可以把数据写入到小文件或一些数据库里,但我是建议你专门写一个后台程序来维护.因为C/C++并不像java可以方便的序列化对象,所以C/C++的session一般只保存一些文本本的东西.
如果是访问量比较大的话,你最好不要用小文件,这样千万的I/O的代价是很大的.
你可以参考一下jsp的session规范.
to Amadalic(飘飘) :呵呵.我才不是什么马甲呢.讨论问题就心平气和的,你们要吵架就到别的地方去吵架.