ASP.NET Lab

The Best Web, The Best Future

博客园 首页 新随笔 订阅 管理

ASP.NET 用户档案特征被设计成用来为当前用户提供唯一的信息。档案能够与已识别的用户和匿名(未被识别)的用户一起运作。

已识别的用户

默认时,用户档案是与被存储在当前 HTTP 环境的 User 属性中的用户身份相关联的,并且能够通过 System.Web.HttpContext.Current 属性进行访问。另外,用户身份还可以通过以下方式而被检测:

  • ASP.NET 窗体识别系统,在识别成功之后就会设置用户的身份。
  • Windows 识别或者 Passport 识别,在识别成功之后就会设置用户的身份。
  • 自定义识别,在你管理用户凭证的获取并且手动设置用户身份的时候使用。

ASP.NET 窗体识别包括了一个被创建的登入窗体并且用来提示用户出示他们的凭证。你可以使用 ASP.NET Login 控件来创建登入窗体并且在不需要编写任何代码的情况下完成窗体识别。关于使用 ASP.NET 特征来识别用户的信息,请参考:[ASP.NET Login 控件概览]与[使用成员资格来管理用户]。关于窗体识别的信息,请参考:[实践:实现简单窗体识别]。

匿名用户

档案同样能够与匿名用户一起运作。但是对于匿名档案的支持在默认时并不是被启用的,因此你必须明确地对它进行启用。另外,当你在 Web.config 文件中定义了档案属性的时候,你还必须明确地让它们为匿名用户而可用。不过档案属性在默认的时候是不支持匿名访问的,这是因为档案有可能被设计成与已识别的用户一起运作,并且多数属性都属于是不为匿名用户可用的个性化信息。

如果匿名识别被启用,那么 ASP.NET 就会在用户第一次访问网站的时候为他们创建唯一的识别。唯一的用户识别被存储在用户计算机的 Cookie 中,因此这个用户就能够在每个页面请求中被识别。另外 Cookie 的默认有效期还被设置成将近 70 天并且在用户访问网站的时候能够周期性地被更新。如果用户的计算机并不接受 Cookie 的使用,那么用户的识别就可以作为页面请求的 URL 的一部分而被维护,虽然识别将在用户关闭浏览器的时候会被丢失。

关于启用匿名识别的信息,请参考:[anonymousIdentification 元素(ASP.NET 设置结构)]。

移植匿名档案信息

在有些情况下,你的应用程序在最初可能会为匿名用户而维护个性化信息,但是该用户最终还是会登入到你的应用程序中。所以在这种情况下,用户的身份就会从被指派的匿名用户身份变成通过识别过程而被提供的身份。

在用户登入的时候(也就是说,在他们中止匿名用户身份的时候),MigrateAnonymous 事件就会被触发。你可以处理这个事件,并且把用户的匿名身份信息移植到新的已识别的身份,如果这样做是必需的。下列代码范例说明了如何在用户被识别的时候来移植信息。

public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)
{
  ProfileCommon anonymousProfile = Profile.GetProfile(args.AnonymousID);

  Profile.ZipCode = anonymousProfile.ZipCode;
  Profile.CityAndState = anonymousProfile.CityAndState;
  Profile.StockSymbols = anonymousProfile.StockSymbols;

  ////////
  // 删除匿名档案。如果匿名 ID 在网站的空闲时间内不是必需的,就删除匿名 Cookie。

  ProfileManager.DeleteProfile(args.AnonymousID);
  AnonymousIdentificationModule.ClearAnonymousIdentifier(); 
}
posted on 2007-02-11 21:39  Laeb  阅读(385)  评论(0编辑  收藏  举报