摘要: 这个标题好长啊。 原本是没打算写下这一篇的,因为觉得身份验证到了登出之后,就算完成了。可是后来有博友提出疑问,登出之后,点击浏览器上的后退按钮,还是可以退回到登出前页面,起不到身份验证的作用。 事实上,就算使用后退按钮回到原来的页面,也只能看看页面内容,而不能对网页进行操作。一但进行操作的话,还是会需要重新登录的。 也许,有些朋友对页面的安全性要求比较高,连看都不想让人家看到。那这要怎么办? 这要从浏览器的缓存说起了。在N久以前,网络的宽带慢的是很慢很慢,所以,浏览器都有一个叫做“缓存”的功能。当你浏览了网页之后,就会把这个网页先缓存到本地计算机中,等你下一次再访问该网页时,浏览器会将缓存到本 阅读全文
posted @ 2012-03-21 09:48 陈庆芬 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 在前面的几篇文章中介绍了asp.net的窗体身份验证,这种身份验证方式可以让通过验证的用户访问指定的目录,而没有通过验证的用户不能访问该目录下的网页。 但是,有一种例外,就是目录中的html文件例外。例如,在《asp.net中的窗体身份验证(最简单篇)》中介绍的,除了登录网页之外,所有网页都必须在登录之后才能访问,但如果在网站中添加一个HTMLPage.htm文件,访问该文件是不需要身份验证的。如下图所示: 之所以出现这种情况,是由IIS的访问机制决定的。当客户端浏览器向Web服务器发送请求时,Web服务器会对所请求的文件的扩展名进行检查,然后决定由哪个ISAPI扩展处理这个请求,然后将请求传 阅读全文
posted @ 2012-03-21 09:47 陈庆芬 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 要使用asp.net窗体身份验证,要做的第一件事就是修改web.config文件。 首先,必须要修改<system.web>节点下的<authentication>子节点,将该子节点中的mode属性值设为“Forms”。 然后,在<authentication>节点下添加<forms>子节点,并在该子节点中配置Forms验证方式的具体参数。 第三,如果在<forms>节点中的protection属性值为All,则要在<system.web>节点下添加<machineKey>子节点,并在该子节点中设置数据验证的方 阅读全文
posted @ 2012-03-21 09:46 陈庆芬 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 前面介绍过了如何使用Forms方式进行用户身份验证,然而,在大多网站中都会有一个“退出”功能,让用户可以通出登录。在asp.net中,退出的方式很简单,只要在退出页面中加上代码“FormsAuthentication.SignOut()”即可。 你可以使用Response.Redirect()在退出之后将网页跳转到另一个网页,也可以使用“FormsAuthentication.RedirectToLoginPage()”将网页跳转到登录页面。相关链接:1、asp.net中的窗体身份验证(最简单篇)2、asp.net中的窗体身份验证(分目录验证篇)3、asp.net中的窗体身份验证(完整篇之一: 阅读全文
posted @ 2012-03-21 09:45 陈庆芬 阅读(351) 评论(0) 推荐(1) 编辑
摘要: 在《asp.net中的窗体身份验证(完整篇之三:用户登录页面) 》中介绍了如何创建一个自定义身份验证票,如何将自定义的身份验证票写入Cookie中。而在自定义的身份验证票中,可以传递一个用户数据,这个用户数据十分有用。可以用来存放用户权限等级、用户VIP号、用户角色等数据,而这些数据往往可以用来控制用户的权限范围。下面我们来看一下怎么样获得用户数据。 首先,修改web.config文件,这个就不再多介绍了,不明白的朋友去查看《asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式) 》和《asp.net中的窗体身份验证(完整篇之附录:web.config中相应节点详. 阅读全文
posted @ 2012-03-21 09:43 陈庆芬 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 在《asp.net中的窗体身份验证(完整篇之二:asp.net的窗体身份验证过程) 》中我们介绍了asp.net的窗体身份验证过程,按照这个流程,我们可以开始动手编写网页代码。根据《asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式)》中的web.config代码,我们网站的登录页面为AdminLogin.aspx。在没有登录的情况下,如果访问Default.aspx网页,服务器会自动跳转到AdminLogin.aspx,如下图所示。 从上图中可以看出,浏览器地址栏中,AdminLogin.aspx后有参数ReturnUrl,而ReturnUrl的值跳转之间访问的 阅读全文
posted @ 2012-03-21 09:42 陈庆芬 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 在《asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式)》中介绍了如何通过修改web.config文件来创建窗体身份验证。修改完web.config文件之后,网站就可以使用窗体身份验证方式来验证用户身份了。那么,整个身份验证的过程是怎么样的呢? 前面说过,在asp.net中,身份验证过程分为两部分,一部分是IIS中的身份验证,只有通过了IIS中的身份验证之后,才行进行asp.net中的身份验证。一个完整的窗体身份验证流程如下所示:首先,用户通过浏览器向服务器发送一个网页请求,假设用户要访问index.aspx网页,那么浏览器就会将请求发送给IIS服务器。假设在该服 阅读全文
posted @ 2012-03-21 09:41 陈庆芬 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 在《asp.net中的窗体身份验证(最简单篇)》中介绍了使用FormsAuthentication.SetAuthCookie()方法创建身份验证票据的方法,事实上,这是一个使用缺省的身份验证票据的方法。在asp.net中,Forms身份验证的方式是在用户登录时创建一个身份验证票,然后将这个身份验证票存放在Cookie中,以后整个网站都可以通过这个Cookie来判断用户是否已经登录。如果用户浏览器不支持Cookie,asp.net也可以将票证放在URL的查询字符串中进行传递,这个不是本文的重点,也就不详细介绍了。 那么当访问一个asp.net的网站时,asp.net究竟是怎么进行身份验证的呢? 阅读全文
posted @ 2012-03-21 09:40 陈庆芬 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 在上一篇博文《asp.net中的窗体身份验证(最简单篇)》中的身份验证虽然很简单,但是有一个缺点,就是访问整个网站都必须要经过身份验证,而事实上,很多网站都不会这么要求的。 比如一个新闻系统,通常只有在发布新闻的网页才需要身份验证,而用户浏览新闻是不需要身份验证的。对于这种情况,就要针对不同的网页来进行身份验证了。 要实现这种功能,也只要将《asp.net中的窗体身份验证(最简单篇)》稍作修改,具体操作方式如下所示: 第一步、创建一个子文件夹,将所有要验证的网页都放在这个文件夹中,设置该文件夹的名字为“admin”。 第二步、修改web.config文件。 1、在<system.web& 阅读全文
posted @ 2012-03-21 09:39 陈庆芬 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 在创建网站中,常常会使用到身份验证。asp.net中内置了几种身份验证的方式,如Windows、Froms、Passport等。这几种身份验证的方式各有不同。一般来说,网站的身份验证方式都会经过以下几个步骤: 1、输入用户名和密码,单击确定按钮。 2、在后台判断用户名和密码是否正确,如果错误返回提示;如果正确,进入可访问的页面。 在ASP时代,通常都会在验证用户名和密码是否匹配之后,创建一个Session,然后在每个需要验证的页面中判断Session是否存在,如果存在,则显示页面内容;如果不存在,产生提示,并跳转到登录页面。 但是,在asp.net时代,这个过程就给大大的减化了,不再需要在每个 阅读全文
posted @ 2012-03-21 09:38 陈庆芬 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 在《asp.net中的窗体身份验证(最简单篇)》说明了如何让通过了身份验证的用户访问网站,但是该方法中有一个缺点,就是访问整个网站都需要用户身份验证。因此,在《asp.net中的窗体身份验证(分目录验证篇)》中介绍了如何让通过了身份验证的用户访问特定的目录,例如网站根目录中的网页是任何用户都能访问的,而admin目录则只能让通过身份验证的用户访问。这种方法可以解决大部分网站的身份控制,但是,对于一些复杂的网站而言,这种方式就有点捉袊见肘了。例如,有一个网站,我们要求根目录中的网页可以让任何用户浏览,而admin目录中的网页只有管理员才能访问、backup目录中的网页只有管理员和系统备份员才能访 阅读全文
posted @ 2012-03-21 09:36 陈庆芬 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 我的俄罗斯名叫作“不折腾不舒服斯基”,所以,不将分区表好好折腾一下,我就是不舒服。 在前面,我们介绍过怎么样直接创建一个分区表,也介绍过怎么将一个普通表转换成一个分区表。那么,这两种方式创建的表有什么区别呢?现在,我又最新地创建了两个表: 第一个表名为Sale,这个表使用的是《SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?》中的方法创建的,在创建完之后,还为该表添加了一个主键。 第二个表名Sale1,这个表使用的是《SQL Server 2005中的分区表(三):将普通表转换成分区表》中的方法创建的,也就是先创建了一个普通表,然后通过为普通表添 阅读全文
posted @ 2012-03-21 09:35 陈庆芬 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 所谓天下大事,分久必合,合久必分,对于分区表而言也一样。前面我们介绍过如何删除(合并)分区表中的一个分区,下面我们介绍一下如何为分区表添加一个分区。 为分区表添加一个分区,这种情况是时常会 发生的。比如,最初在数据库设计时,只预计了存放3年的数据,可是到了第4天怎么办?这样的话,我们就可以为分区表添加一个分区,让它把新的数据放在新的分区里。再比如,最初设计时,一个分区用于存放一年的数据,结果在使用的时候才发现,一年的数据太多,想将一个分区中的数据分为两个分区来存放。 遇到这种情况,就必须要为分区表添加一个分区了。 当然,我们也可以使用修改分区函数的方式来添加一个分区,但是在修改分区函数时,我们 阅读全文
posted @ 2012-03-21 09:33 陈庆芬 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 在设计数据库时,经常没有考虑到表分区的问题,往往在数据表承重的负担越来越重时,才会考虑到分区方式,这时,就涉及到如何将普通表转换成分区表的问题了。 那么,如何将一个普通表转换成一个分区表呢?说到底,只要将该表创建一个聚集索引,并在聚集索引上使用分区方案即可。 不过,这回说起来简单,做起来就复杂了一点。还是接着上面的例子,我们先使用以下SQL语句将原有的Sale表删除。[c-sharp] view plaincopyprint?--删除原来的数据表droptableSale--删除原来的数据表drop table Sale 然后使用以下SQL语句创建一个新的普通表,并在这个表里插入一些数据。[c 阅读全文
posted @ 2012-03-21 09:33 陈庆芬 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 在前面我们介绍过如何创建和使用一个分区表,并举了一个例子,将不 同年份的数据放在不同的物理分区表里。具体的分区方式为: 第1个小表:2010-1-1以前的数据(不包含2010-1-1)。 第2个小表:2010-1-1(包含2010-1-1)到2010-12-31之间的数据。 第3个小表:2011-1-1(包含2011-1-1)到2011-12-31之间的数据。 第4个小表:2012-1-1(包含2012-1-1)到2012-12-31之间的数据。 第5个小表:2013-1-1(包含2013-1-1)之后的数据。 分区函数的代码如下所示:[c-sharp] view plaincopyprint 阅读全文
posted @ 2012-03-21 09:32 陈庆芬 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了。 1、数据库中某个表中的数据很多。很多是什么概念?一万条?两万条?还是十万条、一百万条?这个,我觉得是仁者见仁、智者见智的问题。当然数据表中的数据多到查询时明显感觉到数据很慢了,那么,你就可以考虑使用分区表了。如果非要我说一个数值的话,我认为是100万条。 2、但是,数据多了并不是创建分区表的惟一条件,哪怕你有一千万条记录,但是这一千万条记录都是常用的记录,那么最好也不要使用分区表,说不定会得不偿失。只有你的数据是分段的数据,那么才要考虑到是否需要使用分区表。 3、什么叫数据是分段的?这个说法虽然很不专业,但很好理解 阅读全文
posted @ 2012-03-21 09:29 陈庆芬 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 在创建完分区表后,可以向分区表中直接插入数据,而不用去管它这些数据放在哪个物理上的数据表中。接上篇文章,我们在创建好的分区表中插入几条数据:</mce:script><mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/l 阅读全文
posted @ 2012-03-21 09:25 陈庆芬 阅读(161) 评论(0) 推荐(0) 编辑