Asp.net的用户管理

 在大多数系统中,开发人员都是自己建立用户管理系统
在asp.net中,微软给了一套用户验证,权限,角色的控件和API,接下来的几往篇文单谈一下自己的浅薄认识。
引入数据库
把用户管理的数据库引入到自己的项目中,在装完Freamework2.0后,有如下文件,C:"Windows"Microsoft.NET"Framework"v2.0.50727"aspnet_regsql.exe(这是默认的安装目录),这个文件是用来向用户的数据库添加用户管理的数据库表的。安装界面如下:


(一)

(二)

(三)

(四)

(五)

其中的第三步,用户可以选择自己的数据库把用户管理的数据表加载到自己的数据库中。

此时如果用用户登录控件做用户的操作时,用户的信息还是添加不到自己的数据中的,因为系统默认的用户数据库是一个位于本项目App_Data文件夹下的一个文件性SQL数据库,为了登录控件中用户管理的一些类能操作自己的数据库中的用户管理表,则需在配置文件作一下配置的修改,即在web.config中作修改。
修改如下:
在web.config的<system.web>中添加下列代码

 1 <!--添加成员管理-->
 2    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
 3      <providers>
 4        <add connectionStringName="ConString" enablePasswordRetrieval="false"
 5          enablePasswordReset="true" requiresQuestionAndAnswer="true"
 6          passwordFormat="Hashed" applicationName="/" name="SqlProvider"
 7          type="System.Web.Security.SqlMembershipProvider" />
 8      </providers>
 9    </membership>
10    <!--添加角色管理-->
11    <roleManager defaultProvider="SqlProvider"
12          enabled="true" cacheRolesInCookie="true"     cookieName=".ASPROLES"        cookieTimeout="30"     cookiePath="/"     cookieRequireSSL="true"        cookieSlidingExpiration="true"   cookieProtection="All" >
13      <providers>
14        <add name="SqlProvider" type="System.Web.Security.SqlRoleProvider"          connectionStringName="ConString"    applicationName="SampleApplication" />
15      </providers>
16    </roleManager>
17<!--配置连接字符串-->
18 <connectionStrings>
19    <add name="ConString" connectionString="Data Source=.;Initial Catalog=UserManage;Integrated Security=True"    providerName="System.Data.SqlClient" />
20 </connectionStrings>

本配置的意思是重新建立一个连接字符串,把用户管理和角色管理都指向这个连接字符串,也就是系统中有关用户角色类操作数据库时都依赖这个连接来完成。
成员管理和角色管理的配置中都有一个<providers>的标签,该标签的主要作用是配置成员类和角色类的一些属性,比如成员配置中<add connectionStringName="ConString" enablePasswordRetrieval="false"
          enablePasswordReset="true" requiresQuestionAndAnswer="true"
          passwordFormat="Hashed" applicationName="/" name="SqlProvider"
          type="System.Web.Security.SqlMembershipProvider" />
首先是个连接,指向ConString,密码回复功能,密码重设功能,是否要问题回答,密码的格式,应用程序的路径,本Provider的名称,以及本Provider的类型。
至此,我们就完成了把微软的用户管理的表导入自己的数据库,并且作了连接字符串的配置,如果我们现在操作成员类或角色类,成员和角色的变动就会在自己的数据表中得到体现。

posted @ 2008-07-18 21:05 桂素伟 阅读(1281) 评论(7)  编辑 收藏 所属分类: C#&Asp.net&WinForm

  回复  引用  查看    
#1楼 2008-07-18 23:32 | Jim~      
我感觉用membership就是那么的不爽....还是用自定义的好~~~灵活适用
  回复  引用  查看    
#2楼 [楼主]2008-07-19 00:00 | 桂素伟      
就灵活性来说,自定义最好,不过要达到标准控件的效果,估计要做很多工作了,这个就看怎么取舍了。
  回复  引用  查看    
#3楼 2008-07-19 09:16 | xjb      
如果可以改造一下,应该可以满足个性化需求
  回复  引用  查看    
#4楼 2008-07-19 09:24 | Gray Zhang      
给自己的东西加个适配器变成Membership不是很好嘛,难用的只是自己的SqlMembership,我认为Membership机制本身是很不错的
如果自己去实现认证,像怎么持久化一次会话的认证,怎么写cookie等问题都要考虑,麻烦
  回复  引用  查看    
#5楼 2008-07-19 12:51 | 张玉峰      
几次开发用的都是基于这个的改版,挺好用的。
  回复  引用  查看    
#6楼 2008-07-19 13:43 | Ryan Yu      
membership确实定制性比较低,统一楼主,主要看项目需要,怎么取舍。
  回复  引用  查看    
#7楼 [楼主]2008-07-19 20:22 | 桂素伟      
对,这套机制非常不错,在灵活度上肯定是有限制的,就和西服差不多,买的肯定没有定做的合身(当然裁缝要好)。

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-07-19 20:20 编辑过


相关链接: