日期:2014-05-18  浏览次数:20398 次

新手对ASP.NET的一点理解不知道正确不 ?
第一个问题:
    比如我现在有一个登陆页面,上面有TxtUserId   ,   TxtUserPwd,   TxtValidCode(验证码),BtnLogin   这几个控件,我再提交页面后相当于我向服务器发一个提交请求,服务器接受到请求后重新加载这个登录页面,再执行BtnLogin_Click这个事件,上面这几步操作都始终在服务器端执行后再生成HTML代码回发给浏览器。也就是说客户端只起显示作用。还有我填写的一些登录信息在服务器页面重新加载过程中没有消失是保存在VIEWSTATE中中的吗?

第二个问题:情况和上面第一个一样,就是比如我第一次填写的验证码输入错误,服务器端没通过验证回发到客户端来,这时验证码会更新,我想我假设我记得第一次的验证码,我再次填写时候能填写第一次的验证码通过验证吗?   (我按道理说认为可以,因为第一次的验证码不是保存在SESSION   中的吗,一下子也不会立即失效吧。不过事实上没通过验证不知到为什么?)


------解决方案--------------------
第一个对第二个不太对
------解决方案--------------------
第二个你重新登陆时,会产生新的验证码,所以不对
------解决方案--------------------
既然产生了新的验证码,那么Session中的值应该也是更新了的,你可以Session打印出来看一下就知道了,早都变了.
------解决方案--------------------
验证码的作用是什么呢?先想明白这个问题,你也就很容易理解第二个问题了。
------解决方案--------------------
产生新验证码

Session已经更新了
------解决方案--------------------
每个用户的session[ "ValidCode "] 的值都不同,页面刷新了session[ "ValidCode "] 值也不同!除非你缓存了!
------解决方案--------------------
qqfishqq() ( ) 信誉:100 2007-07-24 20:32:31 得分: 0


楼上能否解释下第二个为什么不对?谢谢您!难道 session[ "ValidCode "] 可以更新的,也就是说session[ "ValidCode "] 只有一个值,就是最新更新时候产生的验证码?

---------------
是的,每次刷新这个页面都要产生新的验证码,
如果没有产生,属于严重的安全漏洞。

qqfishqq() ( ) 信誉:100 2007-07-24 22:57:05 得分: 0


如果自己打开含了两个页面都含验证码的页面,两个页面都同时调用这个生成ValidCode页面,那么第一个页面的验证码估计是失效了,而必须填写第二个页面的验证码了吧

-------------

是的
------解决方案--------------------
mark
------解决方案--------------------
mark