ASP.NET用户个性化设置Profile——配置1

转载出自:http://www.cnblogs.com/xlb2000/archive/2010/08/06/1791903.html

  ASP.NET 2.0除了提供了Membership身份验证机制以外,还提供了一种用户个性化设置的机制,称为Profile。Profile能够和 Membership结合起来,存储用户自定义数据。在Profile中能够存储各类类型的数据,包括最基本的int、double类型,也能够是复杂的 用户自定义类型,好比购物车、用户信息等。html

  Profile和Session相似,都是用来存储用户自定义数据,可是两者也有本质的区别:web

  1.Session只可以短暂的保留用户数据(默认为20分钟),可是Profile能够持久的保存,由于两者的存储介质不一样,Session 默认是存放在内存当中的,而Profile是存放在数据库中。虽说Session能够经过配置使之保存在状态服务器或者数据库当中,但仍是有很大的区 别。数据库

  2.Profile是强类型的,而Session仅仅是一个项集合而已。而且VS对Profile提供了智能感知的支持,使用方便。浏览器

 

  下面来看看如何使用Profile,首先第一步和Membership同样,也是添加数据库支持,仍是和Membership同样,若是以前按照前面说的添加过了,在这里直接开始第二步,就是配置。若没有,则参考前面的文章添加数据库支持。将下面代码复制入web.config的system.web节点之下:服务器

复制代码
< profile  enabled ="true"  defaultProvider ="SqlProvider" >
  
< providers >
      
< add  name ="SqlProvider"  type ="System.Web.Profile.SqlProfileProvider"  connectionStringName ="ConnectionString"  applicationName ="TestMembership" />
  
</ providers >
  
< properties >
      
< add  name ="test"  type ="String"  allowAnonymous ="true" />
  
</ properties >
</ profile >
复制代码

 

  这个配置大多数的属性和Membership中的含义是同样的,咱们只是说明一下特有的属性。在这个配置当中有Providers和 Properties节点,其中Providers节点以前在配置Membership中了解过了,如今介绍一下properties节点:app

  在这个节点下,add标签的做用就是添加一个“属性”,name属性就是“属性”的名字,type就是“属性”的类型,这个类型能够是int、 double等简单数据类型,也能够是购物车类等用户自定义数据类型,不过须要注意的是,若是为“类”类型,则该类必须能够序列化,就是在类的上面添加 [Serializable]特性。allowAnonymous这个属性指定用户在匿名状态下,是否能够设置该属性。ide

 

  好了,配置完毕,咱们就能够在页面上使用Profile了,创建一个页面,在页面上添加一个button双击在button的click事件当中写下以下代码:post

Profile.test  =   " 123123 " ;

  这个Profile.test就是咱们在前面properties节点下添加的“属性”,类型为string类型。网站

  浏览这个页面,点击button,看下效果,哈!出错了!错误提示以下:url

  配置文件属性“test”容许匿名用户存储数据。这要求启用 AnonymousIdentification 功能。

 

  这是由于ASP.NET默认状况下不容许匿名用户,很简单,咱们简单的设置一下,容许使用匿名用户便可,仍是在web.config中system.web节点下添加一段配置:

< anonymousIdentification  enabled ="true" />

  ok,如今再来浏览下页面,点击button试试?没有任何反应?这就对了!

  咱们再次新建一个页面,在这个页面的page_load事件当中添加一句Response.write(Profile.test);

  完事,咱们先浏览第一个页面,点击button,执行了Profile.test=“123123”;这段代码,而后关闭浏览器,再打开第二个页面,能够看到,咱们在第一个页面中存入的“123123”这个字符串,在第二个页面显示出来了。

 

  原理很简单:当咱们打开了anonymousIdentification功能后,ASP.NET会给每一个用户分配一个AnonymousID,保存在Cookie中。如图:

  这是Cookie中存储的内容,.ASPXANONYMOUS这是默认的Cookie名称,能够在web.config中的anonymousIdentification节中CookieName属性中设置本身的Cookie名字。

  这是在调试状态下,获得的AnonymousID

  这是数据库aspnet_Users表中存储的内容,注意UserName和IsAnonymous字段。

  这是数据库中aspnet_Profile中的内容,能够看到,咱们test属性中的内容为:123123,PropertyNames字段中 test:S:0:6的含义你们应该猜出来了吧!test是属性名,S表明的String类型,0:6表明PropertyValuesString字段 中的从第0位到第6位的内容。

  这样,当该用户使用这台电脑再次访问网站,网站即可以根据这个Cookie中的AnonymousID来识别出用户的身份,再经过AnonymousID从aspnet_Profile表中,即可以取出用户上一次保存的数据。

 

  ok,以上即是匿名状态下的Profile。固然,若是咱们不须要匿名,而要求用户登陆后才能保存数据的话,那么就没上面这么麻烦了,直接设置allowAnonymous="false"便可,不须要去添加anonymousIdentification 配置。这样,该属性只能在用户登陆状态下访问,未登陆去访问该属性就会报错。

 

  本篇文章简单的介绍了下Profile在实际项目中的应用,你们能够照着试一下,先有一个感性认识,下篇继续,会有一个小的项目,来完整的演示一下Profile的应用。

相关文章
相关标签/搜索