ASP.NET Whidbey中personalization和membership的一些特征

原创 2004年03月01日 16:16:00

ASP.NET Whidbey中,一个基本的目标是,在开发应用程序时,减少开发时间和代码量。为了达到这一目的,ASP.NET Whidbey提供了一系列的新特征,例如无需代码的数据绑定,新的服务器端控件,尤其是,在这篇文章中要重点讨论的个人化(personalization)和成员角色(membership),来节省你的时间。

伴随着个人化和成员角色这两个新特征,第一步是要配置你用来存储个人化(personalization)和成员角色(membership)数据的提供者(provider)。虽然你可以自己创建AccessSQL Server数据库,手动添加必要的配置元素,更简单的方法是使用ASP.NET Web Site Administration tool,如图一。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2004-3-11611550.wmz

图一

请注意,要成功的配置一个应用程序,你必须使用一个具有管理员权限的账号来登录。

 

要创建一个Access.mdb文件来储存personalization的数据,你需要打开ASP.NET Web Site Administration tool。在一个叫DATA的文件夹下,会自动创建一个AspNetDB.mdb的文件。

CSDN_Dev_Image_2004-3-11611552.png

图二

要配置membershipprovider,你需要使用ASP.NET Web Site Administration toolSecurity标签。最简单的方法是选择使用向导,如图三。

CSDN_Dev_Image_2004-3-11611554.png

图三

在此刻,membership的数据库会被创建,必须的配置元素也会被加入到web.config文件中。你需要做的,只是把所有用户加入到数据库,设置限制的页,以及创建一个login页面。

很重要的一点是,你可以注意到,为personalizationmembership创建的数据库是相同的,所以你可以使用同样的provider

除了内嵌的AccessSQL Serverproviders,你可以创建自己定制的providers,然后使用这些providers来配置应用程序。也就是说,你如果有了一个以前的数据库,还是可以使用membership服务。

 

上面的都是理论方面的,接着我们来看一下实例。我会为各位读者展示使用Access provider来配置personalizationmembership,在membership数据库中添加一个用户,添加personalization的属性,在一个页面中使用这些属性,分别是匿名用户和已登录的用户。

首先要创建一个Web站点,然后点击Solution Explorer窗口下的Web Site Administration tool按钮。(见图二)

接着,点Security标签,选择Security Setup Wizard单选钮,并点Next。第一步是很简单的信息,所以读一下,就可以选Next。第二步,选择From the Internet然后点Next"From the Internet"是使用ASP.NET窗体验证来配置应用程序,"From a local area network"使用Windows验证来配置应用程序。第三步,点Next来使用Web Site Administration tool已经自动创建的AspNetDB.mdb文件。接着点Next跳过第四步。在第五步,因为有测试的目的,至少要加上一个用户。第六步是创建访问规则。最后,按Finish退出向导。数据库已经建立,web.config文件也被自动创建,加入了Web站点,里面包含了各种元素,文件如下:

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  <connectionStrings>

    <add name="webAdminConnection631974613823397072"

      connectionString=

      "c:/inetpub/wwwroot/aspnetPRO_PM/DATA/AspNetDB.mdb"

    />

  </connectionStrings>

  <system.web>

    <membership defaultProvider="AspNetDB">

      <providers>

        <add name="AspNetDB"

          type="System.Web.Security.AccessMembershipProvider,

          System.Web, Version=1.1.3300.0, Culture=neutral,

          PublicKeyToken=b03f5f7f11d50a3a"

          connectionStringName=

           "webAdminConnection631974613823397072"

          applicationName="/aspnetPRO_PM"

          enablePasswordRetrieval="true"

          enablePasswordReset="true"

          requiresQuestionAndAnswer="true"

          passwordFormat="Encrypted" />

      </providers>

    </membership>

    <roleManager defaultProvider="AspNetDB">

      <providers>

        <add name="AspNetDB"

         type="System.Web.Security.AccessRoleProvider,

         System.Web, Version=1.1.3300.0, Culture=neutral,

         PublicKeyToken=b03f5f7f11d50a3a"

         connectionStringName=

          "webAdminConnection631974613823397072"

         applicationName="/aspnetPRO_PM" />

      </providers>

    </roleManager>

    <authentication mode="Forms" />

  </system.web>

</configuration>

如果要允许匿名用户访问你的站点,<anonymousIdentification>元素是必需的。personalization部分包含两个属性,第一个属性,theme,并不指定一个类型,所以可以当作一个字符串对待。第二个属性,FavoriteColors,指定了StringCollection类作为它的类型。在这个属性中,如果想要存储不兼容StringCollection类的数据,都会抛出异常。

<anonymousIdentification enabled="true"/>

<personalization>

  <profile>

    <property name="Theme" allowAnonymous="true" />

      <property name="FavoriteColors"

       type=

        "System.Collections.Specialized.StringCollection"

       allowAnonymous="true"

       serializeAs="Xml" />

  </profile>

</personalization>

 

现在,我们了解了配置personalization和定义一个provider,现在是时候研究如何定义构成用户profilevalue集了。你需要为你想存储的每个profile值添加一个<property>条目。事实上,你可以存储任何种类的对象,简单类型,字符串,布尔类型,或是复杂一点的,比如collections,甚至是自定义的类型。

<profile>

<property name="MessagesPerPage" type="int" />

</profile>

personalization系统支持更复杂的类型,例如collections。事实上,你可以存储任何序列化的对象。其实定义一个复杂的属性和定义一个简单的属性没有太大的差别。接下来的代码,包含了简单和复杂的属性的定义。

<personalization enabled="true" defaultProvider="Access">

    <providers>

        <add name="Access" type="... " connectionName="..." />

        <add name="SQL" type="... " connectionName="..." />

</providers>

<profile>

    <property

        name="EmailAddresses"   

        type="System.Collection.Specialized.StringCollection"

        serializeAs="Xml"

        allowAnonymous="false"

        provider="SQL"/>

    <property name="MessagesPerPage" type="int" defaultValue="25" />

    </profile>

</personalization>

定义好了用户的profile后,就可以开始进行编码。Page类包括一个profile属性,也是HTTPPersonalizationBase的子类。它有如下的成员列表:

CSDN_Dev_Image_2004-3-11611556.png

图四

 

membership特征中,ASP.NET Whidbey提供了很多的安全控件,下面是一个列表:

控件

功能

Login

为站点定制了所有的登录功能,不需要任何代码

LoginView

可以选择几种不同的模板

PasswordRecovery

“忘记密码”的控件,用选择问题和答案来验证用户身份

LoginStatus

显示用户登录的状态

LoginName

能将登录的用户显示到页面上

我们举PasswordRecovery控件为例:在页面添加一个PasswordRecovery控件,HTML代码如下:

<form runat="server">

   <asp:passwordrecovery id="Passwordrecovery1" runat="server" font-

     names="Verdana" font-size="10pt" bordercolor="#999999"

     borderwidth="1px" borderstyle="Solid" backcolor="#FFFFCC"

     visible=true>

      <titletextstyle font-bold="True" forecolor="#FFFFFF"

        backcolor="#333399">

      </titletextstyle>

   </asp:passwordrecovery>

</form

为了能实现这个功能,我们需要手动在web.config中添加以下代码,指定smtp服务器,使之能发送email给用户。

<smtpMail

   serverName="localhost">

</smtpMail>

CSDN_Dev_Image_2004-3-11611558.png

图五

 

我们可以看出,新一代的ASP.NET Whidbey,控件已经做的非常完备,大大方便了程序员的开发效率,需要编写的代码越来越少了,让我们拭目以待吧!

ASP.NET Whidbey中personalization和membership的一些

  • zgqtxwd
  • zgqtxwd
  • 2008年04月24日 16:44
  • 105

ASP.NET MVC4 SimpleMembership 基于角色的权限管理机制(一)--基本配置与使用

以前一直在用MVC3,前段使用学习了MVC4,在做一个小示例的时候,想给注册的用户分配角色,从而实现操作访问权限,自己还是按照MVC3中的做法,可是后来发现已经不行了,甚至创建的数据库都完全不一样,查...
  • CMbug
  • CMbug
  • 2014年06月12日 15:36
  • 1254

ASP.NET Membership和角色管理器

实习期的总结。
  • hellobabygogo3
  • hellobabygogo3
  • 2014年07月17日 14:39
  • 3090

ASP.net Membership角色与权限管理(一)

原文链接:http://www.cnblogs.com/wqq4522/archive/2010/04/22/1717898.html 本文目录: 1.membership简介 2.members...
  • qq_34496400
  • qq_34496400
  • 2016年04月08日 09:57
  • 573

MemberShip加密处理方式

先看一下Code:static void Main(string[] args) { string password = "******"; //[这里密码就不写出...
  • Michael193
  • Michael193
  • 2010年04月21日 09:46
  • 2539

在Asp.net中,Web.Config中 membership 及 roleManager 的配置:

membership 及 roleManager 的配置:                             roleManager 的配置可参照membershi...
  • TianGaojie123abc
  • TianGaojie123abc
  • 2012年11月29日 16:06
  • 1322

Asp.net2.0MD5加密

摘要:1 加Salt散列2 ASP.NET 2.0 Membership中与密码散列有关的代码声明:本文所罗列之源代码均通过Reflector取自.NET Framework类库,Anders Liu...
  • wyaspnet
  • wyaspnet
  • 2008年10月27日 11:21
  • 571

membership配置篇

从.net 2.0开始  asp.net 就进入了一个倡导少写代码多配置的时期“机器先进阿 我们只要把猪赶进去 对面就会从传送带里传出香肠来!”下面就是启动机器并且赶猪的工作。在赶猪以前,我们先来了解...
  • tt03030576
  • tt03030576
  • 2007年09月02日 15:56
  • 1355

Asp.net Mvc4默认权限详细

因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因。 如有冒犯请联系本人,或删除,或标明出处。 因为好的文章,以前只想收藏,但连接有时候会失效,...
  • sat472291519
  • sat472291519
  • 2013年10月15日 15:51
  • 23037

配置web.config中的 membership

配置web.config membership既然是用于成员资格管理,当然要求登录验证身份,所以首先加上一个forms验证。 同样在system.web节点下添加membership节点。      ...
  • niehoude
  • niehoude
  • 2010年04月14日 10:13
  • 1000
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET Whidbey中personalization和membership的一些特征
举报原因:
原因补充:

(最多只允许输入30个字)