[导入]表单验证与Cookies
关于表单验证:
对于ASP.net里的表单验证,差点让我郁闷死了。前些时候也遇到过这样的问题,但都解决了,而且没有遇到今天这样的问题。
看这样的例子,谁也想不到会是这样的麻烦:
login.aspx里:
private void LinkButton1_Click(object sender, System.EventArgs e)
{
FormsAuthentication.RedirectFromLoginPage("WebbUser",false);
}
而在index.aspx里只有一个简单的命令:
private void LinkButton3_Click(object sender, System.EventArgs e)
{
FormsAuthentication.SignOut();
}
然而就是这简单的两三行,让我郁闷了一天。就是因为IE和ASP.net本身都有缓存的原因,所以上面的那个签出事件发生以后,并没有马上实现,也就是说这样做返回的是真:
private void LinkButton3_Click(object sender, System.EventArgs e)
{
FormsAuthentication.SignOut();
User.Identity.IsAuthenticated;
}
我试了好多次,都必须测试好几次,也就是说要签出好几次才能成功,而且我每次签出都要独立的运行三次(真不知道为什么)。
而且这样做也不行,一样要让这个函数执行三次:
private void LinkButton3_Click(object sender, System.EventArgs e)
{
FormsAuthentication.SignOut();
FormsAuthentication.SignOut();
FormsAuthentication.SignOut();
}
郁闷死了。
试了近四个多小时,后来都想放弃了。
在index.aspx里做了一个小的测试,加了一个button让它向页面里写内容。这样就行了,虽然签出后,页面可能没有变,还是原来的index.aspx页面,但执行其它的命令的时候就会要求登录了。当然我也试了好多其它的情况,都要登录了。这就是说,前面的情况是因为ASP.net的缓存所引起的。当然也有一些IE缓存。
当然,ASP.net的而在缓存一定是要配置一下的,但对于在学习一些简单的问题的时候,就要注意了,很多情况下,ASP.net的一个功能都不是独立的,它所涉及到的内容可能是好几个知识点,因此,只明白一两个,就去实验,最后吃苦的一定是自己了。
希望给多多积累一些经验。
<authentication mode="Forms">
<forms
loginUrl = "login.aspx"
protection = "None"
name = "WebbUser"
path = "/"
/>
</authentication>
还要与这个相关。如果你的cookies路径设定的不对,那么可以会签出很多次都不成功。
又测试了一下,总结了以下几个方面的内容:
1、验证问题。不管是采用自己定义的Cookie来验证还是用系统自带的验证,只要验证成功就行了。
2、带路径的Cookie可以设定过期时间。默认的路径为'/',但当你的应用程序与该路径不合时,所有的cookie都为临时的,也就是与浏览器生存期一样的。
3、如果不是长期保存的Cookie,那么设定过期时间是无效的。
4、如果采用自己的Cookie来验证(长期并设定时间),那么使用签出的时候,记得把Cookie的过期时间也修改一下,否则不能成功的签出。
好了,这些是自己瞎琢磨的,不一定对,但我试了很多次,也就这些结论了。
文章来源:http://computer.mblogger.cn/wucountry/posts/46782.aspx
/\_/\
(=^o^=) Wu.Country@侠缘
(~)@(~) 一辈子,用心做一件事!
--------------------------------
学而不思则罔,思而不学则怠!
================================
posted on 2005-09-29 17:25 Wu.Country@侠缘 阅读(545) 评论(0) 编辑 收藏 举报