您的位置:首页 > 编程语言 > ASP

(原)ASP.NET 2.0之Memebership扩展应用解决方案 推荐

2006-08-19 22:09 731 查看
最近,在项目中使用了2.0中的 Membership 框架,本文将在这里讨论如何将其进行扩展,以适应实际项目的需求。期间,经过不断的摸索领会,也查找了一些相关的资料,下面将会给出完整的一个解决方案——通过表关联的方式进行扩展。当然,这只是实现的一个思路,在此和大家探讨。
网上也有很多相关的讨论解决方案的文章,但是大多数都是梗概,没有详细地引导初接触该框架的开发者如何进行实现。这里提出的方案思路是:通过userid字段进行关联,相信但凡要用Membership的开发人员都熟悉那几个基本的aspnet_开头的数据表,也已经知道它们中各个字段的含义。
可能大多数开发者遇到的问题是:默认的aspnet_Users中不足以满足自定义的用户信息,而且很多大字段也不适合保存在Profile中,那么,你可以通过如下的方式进行用户注册:在用户点击注册按钮的时候,首先使用Membership.CreateUser方法在aspnet_Users中注册一个用户,注册之前,你可以设定自己项目中所需的注册条件,比如,允不允许姓名相同等等(代码中的条件是:一个区只能有一个该姓名的showfolk)。
if (!showfolkSys.Exists(name, section))
{
//启用membership,创建一个用户
try
{
MembershipUser newUser = Membership.CreateUser(UserName.Text, Password.Text);
}
catch (MembershipCreateUserException exception)
{
ErrorMessage.Text = GetErrorMessage(exception.StatusCode);
return;
}
catch (HttpException ex)
{
ErrorMessage.Text = ex.Message;
return;
}
}
然后,将注册信息插入自己的表中。这里为了关联aspnet_Users表,需要在自己定义的表中加入字段userid(GUID)。
下面,先给出一个创建用户的存储过程:InsertUser
CREATE PROCEDURE InsertUser
@UserName VARCHAR(50) =NULL ,
@InstitutionID INT = NULL,
@Email VARCHAR(50) = NULL,
@Phone VARCHAR(50) =NULL,
@Mobile VARCHAR(50) =NULL
AS
BEGIN
DECLARE @UserId uniqueidentifier

SELECT @UserId = UserId FROM dbo.aspnet_Users WHERE LOWER(@UserName) = LoweredUserName --AND @ApplicationId = ApplicationId
IF ( @UserId IS NOT NULL )
BEGIN
INSERT Users(
userid,
username,
institutionID,
email,
phone,
mobile
)
VALUES
(
@Userid,
@UserName,
@InstitutionID,
@Email,
@phone,
@mobile
)
END
END
------------------------------------------------
GO

存储过程开始的前两句就是通过 @UserName 的值来反查 aspnet_Users 中的 UserId字段,接下来再插入到自定义的表中。这样,成员角色管理部分可以使用默认的aspnet_Users表,而自定义的信息可以使用自己的表了。
下面是我在 Web.Config中对 membership 的设定,去掉了密码中默认需要的特殊字符和唯一的Email地址的限制。供参考。
<membership defaultProvider="AspNetMembershipProvider" userIsOnlineTimeWindow="20">
<providers>
<remove name="AspNetSqlMembershipProvider"/>
<clear />
<add name="AspNetMembershipProvider"
requiresQuestionAndAnswer="false"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlServices"
enablePasswordRetrieval="false"
minRequiredNonalphanumericCharacters="0"
minRequiredPasswordLength="6"
enablePasswordReset="false"
passwordFormat="Hashed"
requiresUniqueEmail="false"
applicationName="BJWL"/>
</providers>
</membership>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  .net asp 职场 方案 休闲