`

考察ASP.NET 2.0的Membership, Roles,Profile - Part 8

阅读更多

本文英文原版及代码下载:
http://aspnet.4guysfromrolla.com/articles/010307-1.aspx

考察ASP.NET 2.0的Membership, Roles,Profile - Part 8

导言:

我最近遇到一个网站,其主要包含一些静态的内容.在客户端,需要一个页面来从一个数据库表里显示数据.另外,还需要一个页面来便于管理员添加、更新、删除数据.用ASP.NET 2.0的数据源控件以及Membership system,该功能可以很容易的实现。不过有一个问题,由于服务器不支持SQL Server数据库,只有用Access数据库来代替。问题来了,.NET Framework BCL只包含了一个支持Microsoft SQL Server数据库的Membership provider.

可喜的是,微软提供了一个Access数据库模板及在Membership, Roles,Profile里使用Access数据库的provider.在本文我们将探讨如何得到这些基于Access的provider以及如何在ASP.NET 2.0 web应用里使用它们.获取并使用Access Provider

在ASP.NET 2.0的Beta版本里,微软为Membership, Roles, Profile设计的基于Access和SQL Server数据库的provider,并作为基本类库的一部分包含在.NET Framework里.到ASP.NET 2.0 正式发行的时候,微软决定剔除内置的对Access数据库的支持,而只支持Microsoft SQL Server 2005 Express Edition版本数据库.但是不见得所有人都转移到SQL Server 2005.很多web服务器公司就不支持Express Edition.其它人可能在此之前设计的是基于Access数据库的应用程序并使用的很好,要转变到SQL Server的话可能困难重重.

还好,我们可以从微软单独下载到Access providers,其为一个Microsoft Visual Studio安装文件(VSI),包含了C# class类文件以及一个Access数据库.你可以在这里:http://download.microsoft.com/download/5/5/b/55bc291f-4316-4fd7-9269-dbf9edbaada8/SampleAccessProviders.vsi进行下载,当然在本文的下载文件里也包含它.

我们必须采取以下3个步骤才能使用Access providers:

1.将Access Provider Classes类应用到Web Application——下载内容里的C# class类文件要么被编译为一个文件并放到web应用程序的/bin目录文件夹里,要么将这些类文件拷贝到App_Code文件夹.

2.准备好数据库——确保应用程序里有一个Access数据库.

3.更新Web.config文件—必须对Web.config文件进行设置以使应用程序为Membership, Roles,Profile调用Access providers而不是默认的SQL Server providers.

第一步:将Access Provider Classes类应用到Web Application

下载完该VSI文件后,双击以进行安装过程,这将把文件安装到恰当的文件夹(就我的电脑而言:My Documents\Visual Studio 2005\Templates\ProjectTemplates\Visual Web Developer\Starter Kits).在“New Projects”对话框里可以找到一个模板,如下面的截屏所示:

图1


创建一个新工程,用该ASP.NET Access Providers模板创建一个Class Library对象.在此,最理想的是将Class Library对象进行编译得到一个文件,比如AccessProviders.dll.再将其拷贝到应用程序的/bin目录下,这将允许你为Membership, Roles, Profile调用Access provider. 这是最理想的方法因此它便于部署和维护.

另外,你还可以将模板使用的C# class类文件拷贝到应用程序的App_Code文件夹里.最简单的方法是从下载的VSI文件里将其抽出来,在安装向导的第一步里,选择"View files in Windows Explorer",该VSI文件包含一个ZIP压缩文件(ASP.NET Access Providers.zip),在它的Samples目录下包含了必需的类.将这些类拷贝进App_Code文件夹.

图2


第二步:准备好数据库

该VSI文件包含了一个Microsoft Access数据库(ASPNetDB.mdb),其包含了必需的表和视图.我们要将该数据库放在我们的应用程序里。我们可以在Windows资源管理器里查找到VSI里包含的Access数据库;或者安装完VSI后,我们也可以在硬盘里找到该数据库.不管是哪种方式,你都要将这个ASPNetDB.mdb数据库拷贝到App_Data文件夹.确保该文件没有标明为只读,这样那些用户帐户才有对App_Data文件夹的读写权限.


第三步:更新Web.config文件

最后我们要更新Web.config文件,以使Membership, Roles,Profile使用基于Access的provider而不是默认的基于SQL Server的provider.我们也需要在<connectionStrings>节点引用该Access数据库的路径.

首先添加新的<connectionStrings>,假定你的数据库还是ASPNetDB.mdb且放在App_Data文件夹里,你可以使用如下的代码:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<add name="LocalAccessDatabase" connectionString="~/App_Data/ASPNetDB.mdb"

providerName="System.Data.OleDb"/>
</connectionStrings>

<system.web>
...
</system.web>
</configuration>

接下来在<system.web>元素,添加必要的Membership, Roles,Profile元素.下面的声明清除了默认的Membership provider设置,而将AccessMembershipProvider作为应用程序默认的Membership provider:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<add name="LocalAccessDatabase" connectionString="~/App_Data/ASPNetDB.mdb"

providerName="System.Data.OleDb"/>
</connectionStrings>

<system.web>
<membership defaultProvider="AccessMembershipProvider">
<providers>
<clear/>
<add name="AccessMembershipProvider"
type="Samples.AccessProviders.AccessMembershipProvider, AssemblyName"
connectionStringName="LocalAccessDatabase"
enablePasswordRetrieval="false"
enablePasswordReset="false"
requiresUniqueEmail="false"
requiresQuestionAndAnswer="false"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
applicationName="SampleSite"
hashAlgorithmType="SHA1"
passwordFormat="Hashed"/>
</providers>
</membership>
</system.web>
</configuration>

我们注意到<connectionStrings>节点用到的name与<add>元素里的connectionStringName属性的值一样(都是LocalAccessDatabase).如果你将类编译成一个文件并拷贝到/bin目录的话,type应该使用"Samples.AccessProviders.AccessMembershipProvider, AssemblyName";而如果你将类文件拷贝到App_Code文件夹的话,type应该使用 "Samples.AccessProviders.AccessMembershipProvider".

一旦完成上面3个步骤后,你就按同一种方式来使用Membership, Roles, Profile system就像是在使用默认的基于SQL Server的provider一样(也不完全正确,见如下的警告以及VSI里的README文件)。这意味着你可以使用Security Web控件——Login, LoginView, CreateUserWizard等.本文下载代码里包含了一个简单的website,它的Membership 和 Roles功能调用的是Access providers.

关于使用Access-based Providers的警告

VSI里的README文件指出了使用Access Membership provider的缺点,我这里再次重申:

1——在CreateUser 和 ChangePassword方法里并没有强制性的对密码长 度做出要求,该设置可以进行读取但不能被provider使用.

2——不能在provider里执行帐户锁定,自然,UnlockUser方法也无效.同 时不能阻止带有恶意的password 或password answer的企图.

3——不支持创建带有一个明显UserId(比如providerUserKey)的新用户

4——不支持创建检索一个基于UserId(比如providerUserKey)的用户

参见README文件以获取更多的信息


结语:

本文我们考察了适用于Membership, Roles,Profile的Access providers,它允许开发者使用一个Access数据库来作为Membership, Roles, 以及 Profile systems的存储备份(backing store)

祝编程快乐!

分享到:
评论

相关推荐

    asp.net 2.0编程珠玑--来自mvp的权威开发指南

    《ASP.NET 2.0编程珠玑--来自MVP的权威开发指南》是一本深入探讨ASP.NET 2.0技术的专业书籍,由该领域的专家,即微软最有价值专家(MVP)撰写。这本书旨在帮助开发者充分理解和掌握ASP.NET 2.0的核心概念,提升其在...

    ASP.NET2.0数据库项目案例导航

    在ASP.NET 2.0中,可以使用预建的身份验证和授权组件,如Membership、Roles和Profile,来轻松实现用户注册、登录、密码找回和权限控制等功能。通过自定义表单身份验证,开发者可以创建符合特定业务需求的用户验证...

    完全手册ASP.NET2.0网路开发详解(源码)

    《完全手册ASP.NET 2.0 网络开发详解》是一本深入解析ASP.NET 2.0技术的专业书籍,附带的源码文件旨在帮助读者更好地理解和实践书中的理论知识。这本书涵盖了ASP.NET 2.0的核心概念、开发工具、架构设计、页面生命...

    Asp.Net2.0网站开发实战.iso

    《Asp.Net2.0网站开发实战》是一个深入学习Asp.Net 2.0技术的教程资源,以ISO格式提供,原始大小超过50MB,但压缩后仅3MB。这个教程涵盖了Asp.Net 2.0的核心概念、开发工具和实际应用,是初学者和进阶开发者的重要...

    ASP.NET 2.0 配套光盘-008

    7. **会员和角色管理(Membership and Roles)**:ASP.NET 2.0提供了内置的用户身份验证和授权机制,简化了安全性和权限管理。 8. **状态管理(State Management)**:增强了视图状态、隐藏字段、查询字符串、会话...

    Asp.net 2.0模块四

    总结起来,Asp.NET 2.0模块四涵盖了用户认证与授权(Membership & Roles)、界面定制(Themes & Skins)、站点导航、Ajax支持以及用户配置(Profile Providers)等多个关键领域。通过学习这些知识点,开发者能更高效...

    精通asp.net2.0的典型模块的一些例子

    它将演示如何结合ASP.NET 2.0的各种特性,如 Membership、Roles 和 Profile,构建一个交互性强的社区平台。 8. **C22 - 错误处理与日志记录** 最后,C22可能会讲解如何优雅地处理程序中的错误,包括使用...

    ASP.NET 2.0快速入门(1):ASP.NET 2.0介绍

    ASP.NET 2.0还包括了成员资格(Membership)、角色(Roles)和配置(Configuration)管理的增强。成员资格系统提供了一种标准的方式来管理用户账户,而角色系统则允许对用户进行分组并赋予不同权限。这为创建安全的...

    asp.net2.0中一个简单的用户登录注册的例子

    5. **Membership Provider**: 这是ASP.NET 2.0中处理用户数据的抽象层。开发者可以选择SQL Server Membership Provider,将用户数据存储在SQL Server数据库中,也可以选择其他支持的提供者。 6. **数据库设计**: 在...

    web应用开发asp.net 2.0 复习资料

    ASP.NET 2.0是微软推出的用于构建Web应用程序的框架,它是.NET Framework的一部分,提供了丰富的功能和工具,使得开发者能够高效地创建动态、交互式的Web应用程序。本复习资料旨在帮助初学者深入理解ASP.NET 2.0的...

    ASP.NET 2.0快速入门(6):ASP.NET 2.0 成员管理

    ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它极大地简化了Web开发过程,特别是对于那些需要用户身份验证和权限控制的应用。在ASP.NET 2.0中,成员管理是一个核心功能,它提供了强大的用户注册、登录、...

    ASP.NET2.0全程指南

    6. **会员、角色和配置文件**:ASP.NET 2.0增强了身份验证和授权功能,引入了会员(Membership)、角色(Roles)和配置文件(Profile)API,为用户管理提供了标准接口,支持多种身份验证模式,如Windows、Forms和...

    ASP.NET 2.0入门与提高系列课程(1):揭开Orcas神秘的面纱

    5. **Membership和Roles**:ASP.NET 2.0提供了内置的身份验证和授权机制,通过Membership管理用户账户,Roles则用于分配和管理用户的权限。 6. **AJAX支持**:尽管ASP.NET 2.0本身不包含完整的AJAX框架,但它引入了...

    ASP.NET_2.0网站开发全程解析

    ASP.NET 2.0是微软推出的一种用于构建动态网站、Web应用程序和服务的框架,它基于.NET Framework,提供了高效、安全且可扩展的平台。在"ASP.NET 2.0网站开发全程解析"这本书中,作者深入浅出地介绍了ASP.NET 2.0的...

    深入挖掘ASP.NET 2.0系列课程(6):个性化定制ASP.NET 2.0

    8. **提供程序模型(Provider Model)**:ASP.NET 2.0的提供程序模型允许开发者使用预定义的接口来实现自己的数据存储机制,如数据库、XML文件或Active Directory,这使得个性化功能能够适应各种后端环境。...

    ASP.NET2.0

    6. **会员(Membership)和角色(Roles)**:ASP.NET 2.0提供了内置的安全框架,包括会员管理、角色管理和权限控制,方便实现用户注册、登录和权限验证,适合于社区宽带用户管理。 7. **状态管理(State Management)**:...

    ASP.NET2.0源码

    3. ** Membership 和 Roles**:ASP.NET 2.0 引入了会员(Membership)和角色(Roles)框架,方便开发者处理用户身份验证和授权,支持多种身份验证模式,如Windows身份验证、 Forms身份验证等。 4. **站点导航**:...

    asp.net2.0论坛

    7. **成员资格(Membership)和角色(Roles)**:ASP.NET 2.0内置了强大的身份验证和授权服务,包括成员资格提供程序和角色提供程序,便于实现用户注册、登录、权限控制等功能。 8. **配置管理工具**:改进的Web....

    ASP.NET2.0数据库入门经典

    【ASP.NET 2.0简介】 ASP.NET 2.0是Microsoft开发的Web应用程序框架,它是ASP(Active Server Pages)技术的升级版,基于.NET Framework。ASP.NET 2.0旨在简化Web开发过程,降低了新手入门的难度,同时减少了开发...

Global site tag (gtag.js) - Google Analytics