现在的位置: 首页 > 综合 > 正文

Profile 详解之匿名用户初探

2011年12月26日 ⁄ 综合 ⁄ 共 2863字 ⁄ 字号 评论关闭

前面也介绍了很多的有关 Profile 的知识点,但是那些都有一个前提条件,

就是必须在明确了唯一用户之后才可以进行使用的,亦或说必须登录才能成功,

但是很多情况下,匿名是必须的,就比如你去购物,您总不会一开始就登录上去吧,

一般人的做法是先选东西,然后再在要结账了的时候登录一下就 OK 了,

这上面便涉及到很重要的一个问题了,也就是匿名的问题,

虽然说是匿名,但是只要您浏览这个网站,网站却还是可以清楚的辨认出您是谁的,

这其中呢,是一个 ASP.NET 2.0 起的匿名跟踪机制在捣鬼,

而这匿名跟踪机制呢,实质上就是当你第一次以非网站用户的身份(匿名)浏览时,

ASP.NET 会自动给你分配一个 AnonymousID ,

并且会将这个 AnonymousID 以 Cookie 保存到您的机器上,

这样以后您在访问网站,网站便可以分辨出您的身份,并且可以为您保存 Profile 信息了。

不过,在 web.config 中默认配置是不允许匿名身份识别的,所以要想使用匿名机制,

还必须配置您的 web.config ,

主要是配置 <system.web> 下的 <anonymousIdentification> 节,

这里呢我就直接从 MSDN 上拷贝来了,

因为那上面说的实在够详细了,也没什么好解释的了,

<anonymousIdentification  
   enabled="[true | false]"
   cookieless="[UseUri | UseCookies | AutoDetect | UseDeviceProfile]"
   cookieName=""
   cookiePath=""
   cookieProtection="[None | Validation | Encryption | All]"
   cookieRequireSSL="[true | false]"
   cookieSlidingExpiration="[true | false]"
   cookieTimeout="[DD.HH:MM:SS]"
   domain="cookie domain"
/>

cookieless

指定对于 Web 应用程序是否使用 Cookie。

HttpCookieMode 枚举用于在配置节中指定该属性的值。

它由支持无 Cookie 身份验证的所有功能使用。

指定 AutoDetect 值时,ASP.NET 将查询浏览器或设备以确定它是否支持 Cookie。

如果浏览器或设备支持 Cookie,则使用 Cookie 保存用户数据,

否则在查询字符串中使用标识符。

当配置支持 AJAX 的 ASP.NET 网站时,

应仅为 cookieless 属性使用 UseCookies 的默认值。

ASP.NET AJAX 客户端脚本库不支持其他使用编码到 URL 中的 Cookie 的设置。

此属性可以为下列可能值之一。

AutoDetect

指定由 ASP.NET 决定发出请求的浏览器或设备是否支持 Cookie。

如果发出请求的浏览器或设备支持 Cookie,

则 AutoDetect 使用 Cookie 来保存用户数据;

否则在查询字符串中使用标识符。

如果浏览器或设备支持 Cookie,但当前禁用了 Cookie,

则请求功能依然会使用 Cookie。

UseCookies

指定无论浏览器或设备是否支持 Cookie,

都使用 Cookie 来保存用户数据。这是默认设置。

UseDeviceProfile

指定由 ASP.NET 根据 HttpBrowserCapabilities 设置来确定是否使用 Cookie。

如果该设置指示浏览器或设备支持 Cookie,将使用 Cookie;

否则,将在查询字符串中使用一个标识符。

UseUri

指定无论浏览器或设备是否支持 Cookie,调用功能都使用查询字符串来存储标识符。

默认值为 "UseCookies"。

cookieName

指定分配给 Cookie 的名称。

默认值为 ".ASPXANONYMOUS"。

cookiePath

指定存储 Cookie 的目录的路径。路径区分大小写。

默认值为 "/" 指定的根目录。

cookieProtection

指定 Cookie 保护方案。

此属性可以为下列可能值之一。

All

指定同时使用 Validation 和 Encryption 值来保护 Cookie 中的信息。

Encryption

对 Cookie 中的信息进行加密。

None

指定 Cookie 信息不受保护。

Cookie 中的信息以明文形式存储,

将这些信息发回服务器时不会对它们进行验证。

Validation

确保 Cookie 中的信息在发回服务器之前不会被更改。

默认值为 "Validation"。

cookieRequireSSL

指定将 Cookie 传输到客户端时是否需要安全套接字层 (SSL) 连接。

因为 ASP.NET 设置身份验证 Cookie 属性 Secure,

所以,除非正在使用 SSL 连接,否则客户端不返回 Cookie。

默认值为 false。

cookieSlidingExpiration

必选的 Boolean 属性。

指定 Cookie 超时是在每次请求时重置还是按预定义的固定时间间隔重置。

如果为 true,则剩余的生存时间 (TTL) 少于 50% 时 Cookie 超时。

如果为 false,则 cookieTimeout 持续时间过后 Cookie 超时。

默认值为 true。

cookieTimeout

必选的 TimeSpan 属性。

指定 Cookie 过期时间间隔(以分钟为单位)。

默认值为 100000 分钟(69 天 10 小时 40 分钟)。

最大值为 2 年。

domain

指定 Cookie 域。

使用此属性可以在具有共同 DNS 命名空间的域

(例如,以 contoso.com 结尾的所有站点)之间共享匿名标识 Cookie。

若要共享匿名标识 Cookie,这些站点必须共享相同的解密和验证密钥。

所有站点的其他匿名标识配置属性(如 cookiePath 和 cookieName)必须相同。

默认值为空字符串 ("")。

enabled

可选的 Boolean 属性。

指定是否启用匿名标识。如果为 true,

则使用 Cookie(或没有 Cookie 的值)来管理用户的匿名标识符。

默认值为 false。

 

下面就来看一个 Demo 吧,这个 Demo 呢很简单,

主要呢是完成在 web.config 中的设置,

同时前面曾提到过 ASP.NET 会为匿名用户自动分配独一无二的 AnonymousID,

所以就顺便也读出这个 AnonymousID 吧

下面的就是在 web.config 中的配置了,

image

然后就是 .aspx 页面了

image

下面就来运行看一看效果吧

image

这不是给其分配了一个唯一的 AnonymousID 嘛

然后再到路径 C:\Users\XiaoZhen\AppData\Roaming\Microsoft\Windows\Cookies

下来看一看创建的 Cookie 吧(我的系统是 Win7 ,XP 的话,Cookie 存放的路径不同)

image

打开这个文本文件来看的话

(可以看到是以 BaoBeiMe 开头的,因为我定义了 CookieName=”BaoBeiMe”

   默认的名字是 .ASPXANONYMOUS )

image

                                                2010—2—10

 

抱歉!评论已关闭.