分享
 
 
 

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

王朝asp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

伴随着个人化和成员角色这两个新特征,第一步是要配置你用来存储个人化(personalization)和成员角色(membership)数据的提供者(provider)。虽然你可以自己创建Access或SQL Server数据库,手动添加必要的配置元素,更简单的方法是使用ASP.NET Web Site Administration tool,如图一。

图一

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

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

图二

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

图三

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

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

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

上面的都是理论方面的,接着我们来看一下实例。我会为各位读者展示使用Access provider来配置personalization和membership,在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,现在是时候研究如何定义构成用户profile的value集了。你需要为你想存储的每个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的子类。它有如下的成员列表:

图四

在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>

图五

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有