• 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类型,也可以是复杂的用户自定义类型,比如购物车、用户信息等。

      Profile和Session类似,都是用来存储用户自定义数据,但是二者也有本质的区别:

      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节点:

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

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

    Profile.test = "123123";

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

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

        配置文件属性“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的应用。

  • 相关阅读:
    mysql5.7 编码统一utf-8
    Spring+Swagger文档无法排序问题解决
    git的常用命令
    maven常用命令
    在centos6.5中安装zookeeper集群
    在centos6.5中安装github的客户端git
    rpm安装和卸载软件
    在centos6.5中安装scp和lrzsz
    用cxf开发restful风格的WebService
    cxf的soap风格+spirng4+maven 客户端
  • 原文地址:https://www.cnblogs.com/liuyu7177/p/3065056.html
Copyright © 2020-2023  润新知