新疆软件开发

本站首页 软件开发 成功案例 公司新闻 公司简介 客服中心 软件技术 网站建设
  您现在的位置: 新疆二域软件开发公司 >> .Net技术 >> 文章正文

ASP.NET 2.0之Memebership扩展应用解决方案

最近,在项目中使用了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>

作者:未知 | 文章来源:未知 | 更新时间:2007-12-3 14:20:57

  • 上一篇文章:

  • 下一篇文章:

  • 相关文章:
    搜集整理的asp.net的验证方式大全session
    asp,net软件结构设计和相关的安全性问题
    如何解决Menu菜单被frame遮挡以及iframe自适应的问题
    Orcale与Asp.net的端口冲突解决方法
    安全技术:数据库系统安全之漏洞解决方法
    如何利用SQL Server进行会话状态session的保持
    数据库设计-数据库的三级模式
    ASP.NET中如何使用unsafe选项
    三个视图搞定SqlServer数据库字典
    深入了解数据源控件Data Souce controls
    软件技术
    · 开发语言
    · Java技术
    · .Net技术
    · 数据库开发
    最新文章  
    ·.net技术 asp.net MVC3 Vi
    ·.net将视频文件格式转换成
    ·NET Framework 2.0 Servic
    ·如何动态修改winform的app
    ·asp,net软件结构设计和相关
    ·学习怎样使用ASP.NET中的虚
    ·,net基础类的学习:system
    ·.net学习:c#事件的深入分
    ·Facade Pattern学习总结
    ·C#如何设置或者获取目录的
    ·如何使用XSL来定义ASP.NET
    ·理解WCF Data Contract契约
    ·如何能在.net2.0开发的控件
    ·模式怎样使用,讲解模式的
    ·如何解决Menu菜单被frame遮
    关于我们 | 软件开发 | 下载试用 | 客服中心 | 联系我们 | 友情链接 | 网站地图 | 新疆电子地图 | RSS订阅
    版权所有 © 2016 新疆二域软件开发网 www.k8w.net All Rights Reserved 新ICP备14003571号
    新疆软件开发总机:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆乌鲁木齐北京中路华联大厦A-5C 邮编:830000