zoukankan      html  css  js  c++  java
  • asp.net2.0安全性(2)--用户个性化设置(2)--转载来自车老师

     

    上一篇我们用Profile.age等方式可以读取用户的年龄和其它的信息,但有的时候我们要查询显示所有用户的信息,但asp.net没有提供查询所有用户信息的功能,我们只能对现有的用户逐一查询其Profile信息。

    第一步:设置配置文件

    第二步:得到所有的用户

    MembershipUserCollection users = Membership.GetAllUsers();

    这里用到了Membership类的GetAllUsers()方法,此内容已经在“用户与角色管理”中说过,不再赘述。

    第三步:编历users集合,取了每一个用户的Profile

    foreach (MembershipUser singleUser in Users)

    {

         ProfileCommon userprofile = Profile.GetProfile(singleUser.UserName);

         Response.Write(userprofile.name);

         Response.Write(userprofile.age);

         Response.Write(userprofile.school);

    }

    读取匿名用户的Profile

    匿名用户也有Profile?答案是肯定的。前面说过,asp.net2.0加入了一个匿名跟踪机制,它可以产生一个独一无二的GUID识别码附加到未经过验证的网页的Request中。

    默认的“匿名身份识别”是disabled,因此如果要想让你的网站识别匿名用户需要在Web.Config文件中进行如下配置:

    <system.web>

    <anonymousIdentification enabled="true"/ >

    </system.web>

    设置完毕就可以通过this.Request.AnonymousID取出用户的GUID。

    使用匿名用户Profile的场境:

    1) 过去做购物网站时,我们将购物车放在Session中,但Session有一定的过期策略,一般为20分钟。如果我们逛了半小时才进行结账的话,那购物车的数据通过Profile保存是最好的。

    2) 有人逛购物网站并不喜欢登录后再购买,而时逛着逛着发现一个好东西,这里再去登录购买的话就会让用户感到有点烦,尤其在网络速度比较慢的情况下。这时可以使用匿名身份对用户购买的东西进行记录,在结账的时候再让用户输入账号密码,进行结账。

    使用匿名Profile有两个关键点:

    1)     将anonymousIdentification的enable属性设为true

    2)     将相应匿名保存的Profile字段属性也设为allowAnonymous="true"

    使用匿名Profile存储信息:

    第一步:将anonymousIdentification的enable属性设为true

    <anonymousIdentification enabled="true" cookieless="UseCookies"></anonymousIdentification>

    第二步:在Web.Config文件中将“前景色”与“背景色”两个属性设为allowAnonymous="true"

          <profile>

            <properties>

              <add name="name" type="System.String"></add>

              <add name="age" type="System.Int32"></add>

              <add name="school" type="System.String"></add>

              <group name="color">

                <add name="forecolor" type="System.Drawing.Color" serializeAs="Binary" allowAnonymous="true"></add>

                <add name="backcolor" type="System.Drawing.Color" serializeAs="Binary" allowAnonymous="true"></add>

              </group>

            </properties>

        <profile>

    第三步:

    设置匿名用户的“前景色”和“背景色”

    Profile.color.backcolor = Color.FromName(listBack.Text);

    Profile.color.forecolor = Color.FromName(listFore.Text);

    Label1.ForeColor = Profile.color.forecolor;

    Label1.BackColor = Profile.color.backcolor;

    第四步:查看aspnet_profile表中的内容,发现颜色被存进表中了。

    匿名者的Profile向登录用户的迁移(Migration)

    第一步:如上

    第二步:如上

    第三步:如上

    第四步:在网站的Global.asax中添加下列代码:

        void Profile_MigrateAnonymous(object sender, ProfileMigrateEventArgs args)

    {

         //取得匿名用户的ID

            ProfileCommon anonyProfile = Profile.GetProfile(args.AnonymousID);

            if ((anonyProfile.color.backcolor != null) && (anonyProfile.color.forecolor != null))

            {

                Profile.color.forecolor = anonyProfile.color.forecolor;

                Profile.color.backcolor = anonyProfile.color.backcolor;

                Profile.Save();

            }

            //删除匿名用户的Profile

            ProfileManager.DeleteProfile(args.AnonymousID);

            //清除匿名用户的Cookie或身份资料

            AnonymousIdentificationModule.ClearAnonymousIdentifier();

    }

    用户登录时就会引发Profile_MigrateAnonymous事件将匿名用户迁移到用户的Profile

    (车延禄)

    收藏于 2007-07-03

  • 相关阅读:
    Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (初级)
    Microsoft Enterprise Library 5.0 系列(五) Data Access Application Block
    Microsoft Enterprise Library 5.0 系列(八) Unity Dependency Injection and Interception
    Microsoft Enterprise Library 5.0 系列(九) Policy Injection Application Block
    Microsoft Enterprise Library 5.0 系列(三) Validation Application Block (高级)
    软件研发打油诗祝大家节日快乐
    从挖井的故事中想到开发管理中最容易忽视的几个简单道理
    ITIL管理思想的执行工具发布
    管理类软件设计“渔”之演化
    20070926日下午工作流与ITILQQ群 事件管理 讨论聊天记录
  • 原文地址:https://www.cnblogs.com/ooip/p/4793802.html
Copyright © 2011-2022 走看看