在ASP.NET 2.0中,新增加的membership provider功能,以及结合功能强大 的一系列注册,登陆控件,可以很方便地对用户的登陆和权限等进行管理(参见 <<ASP.NET 2.0登陆控件简介>>)。
但是,可能大家会发现,ASP.NET 2.0自带的这些登陆控件和membership的管 理功能,默认的是和sql server 2005 express搭配使用的,那么,如何改成使 用SQL Server 2000或者是其他的数据源,如access,oracle等呢?如果自己想在 应用中,另外重新写一个对登陆用户或者用户权限等管理的应用,要如何修改呢 ?在本文中,将给出在ASP.NET 2.0中使用自定义provider,以配合登陆控件来实 现一个简单的登陆过程。
为了明白ASP.NET 2.0中的provider是如何工作的,首先看下下面的结构图:
由上图可以清楚看到,在最上面的一层,是各类的登陆控件,下面一层是与 member有关的membership api。在Membership Api中,membership 类执行有关 对用户的操作,比如增加,删除用户,而MembershipUser类则存储有关用户的个 人信息,如用户名,密码,EMAIL等信息。
在Visual Studio 2005 beta 2中,默认使用的是Sql express membership provider。Provider的作用,是起到沟通Membership Api以及数据库,使得用户 并不需要关心要使用的是何种数据库,全部的操作都可以用各类相应的数据 provider来实现。
但很多时候,ASP.NET 2.0默认支持的provider是不能满足其需要的,我们可 以自己根据需要编写provider.在本文中,将介绍如何使用access数据库,建立 一个数据表,存放用户的信息。本文介绍的方法,也可以适用在其他数据库上。
首先,我们打开Visual Studio 2005 beta 2,选用VB.NET,新建一个WEB SITE站点。在这个例子中,为简单起见,我们设置一个用户注册表单,一个登陆 的表单,新用户可以先注册,之后进行登陆。
接着,往默认的窗体中,拖放一个CreateUserWizard的控件,这是一个系统 提供的新建用户的自动控件,可以很方便地新建一个用户。为了页面美观,我们 点控件右上方的"智能感知",选择"auto format",在弹出的窗体中,再选 择"Elegant"样式,如下图所示:
当然,我们可以任意修改该控件的文字提示。这里我们为了让能使用户在注 册后能转到登陆页面,因此,设置该控件的ContinueDestinationPageUrl属性的 值为:Login.aspx,这个页面等下会编写。
接着,再拖拉一个LoginView控件到default.aspx页面中。在该控件中,可以 设置两种模版:Anonymous模版,表示在用户未登陆前,访客看到的状态; LoggedIn 模版,表示等用户成功登陆后,看到的状态(这里可以设置一些文字 显示,比如欢迎进入等,同时一般会显示用户的名字)。
在这里,我们在LoginView控件中的LoggedIn 模版中,我们输入"You are logged in",并且增加一个LoginName和一个LoginStatus控件。其中,LoginName 控件显示登陆后用户的ID,而LoginStatus控件,则当用户登陆后,会显示 logout(注销)的链接。如下两图所示: