.NET使用无Cookie的表单认证票据

来源:北大青鸟飞迅校区|发布时间:2013-05-01 18:42:06

        默认情况下,forms authentication system将决定是将票据存储在cookies collection里还是插入用户访问页面的URL里。所有主流的桌面浏览器,比如Internet Explorer,Firefox,Opera,或Safari都支持cookies,但并非所有的移动设备都支持。

forms authentication system使用何种cookie策略,取决于元素里的cookieless设置,它可以有如下四种配置:

.UseCookies——指定总是使用基于cookie的票据

.UseUri——指定从不使用基于cookie的票据

.AutoDetect——如果device profile不支持cookies,就不使用基于cookie的票据;如果device profile支持cookies,那么就运用一种探测机制来判断是否可以使用cookies.

.UseDeviceProfile——这是默认值,如果device profile支持cookies,就使用基于cookie的票据,不运用探测机制。

其中,AutoDetect 和 UseDeviceProfile选项都依靠一个device profile来判断是使用基于cookie还是无cookie的票据。ASP.NET有一个关于这种devices及其性能的数据库,比如某种devices是否支持cookies,它支持那个版本的JavaScript等信息。每次,当一个device向服务器发出对某个页面的请求时,该请求里将包含一

个名为“user-agent”的HTTP header,用于表明device的类型。ASP.NET将自动的把提供的user-agent字符串与数据库里相应的信息匹配起来。

注意:

该数据库存储在很多的XML文件里.这些默认的device profile文件,其路径为%WINDIR%Microsoft.NetFrameworkv2.0.50727CONFIGBrowsers。你也可以在你应用程序的App_Browsers文件夹里添加自定义的文件,关于这方面的更多信息,请参阅文章《How To: Detect Browser Types in ASP.NET Web Pages》

由于默认使用的是UseDeviceProfile选项.当访问站点的某个device不支持cookies时,就站点就使用无cookie的票据.

在URL里对票据进行编码

当浏览器每次向某个站点发出请求时,用来存储信息的载体通常是Cookies。但如果访问站点的device不支持Cookies的话,我们必须使用某种方法在客户端和服务器端传递票据,通常的做法是在URL里将cookie数据编码。

为了进行演示,我们将强迫站点使用无cookie的票据,为此我们将采用UseUri:

做了上述修改后,通过浏览器访问.当以匿名用户进行访问时,URL看起来和以前没什么区别,比如访问Default.aspx页面时,地址栏看起来和下面的差不多:

http://localhost:2448/ASPNET_Security_Tutorial_03_CS/default.aspx

然而一旦你登录后,票据将加密到URL里.比如,当以Sam的名义登录后,转到Default.aspx页面,这次地址栏看起来和下面的差不多:

http://localhost:2448/ASPNET_Security_Tutorial_03_CS/(F(jaIOIDTJxIr12xYS-VVgkqKCVAuIoW30Bu0diWi6flQC-FyMaLXJfow_Vd9GZkB2Cv-rfezq0gKadKX0YPZCkA2))/default.aspx

该票据已经被编码进URL。字符串(F(jaIOIDTJxIr12xYS-VVgkqKCVAuIoW30Bu0diWi6flQC-FyMaLXJfow_Vd9GZkB2Cv-rfezq0gKadKX0YPZCkA2)就是以16进制对票据信息编码后的效果。这于通常情况下存储在一个cookie里的数据是一样的。

上一篇:三层最重要的也是“抽象”
下一篇:在C#程序设计中使用Win32类库

热门话题

招生热线: 4008-0731-86 / 0731-82186801

学校地址: 长沙市天心区团结路6号

Copyright © 2006 | 湖南大计信息科技有限公司 版权所有

湘ICP备14017520号-3

关注我们
在线咨询
嘿,我来帮您!