Asp.Net 内置支持成员管理功能,利用这个,你可以非常安全的存储和验证用户信息。 特别当你将成员管理与角色和个性化管理结合在一起,你就能创建一个强大的应用系统。Asp.Net包含一系列类让你访问成员管理和角色相关的功能,你可以通过下面的的链接来了解这些类。
Asp.Net的成员管理功能可以将成员信息保存在 SQL Server 数据库中, 为了在一个项目中使用成员管理, 你必须在数据库中安装跟成员管理相关的表,视图和存储过程, 一旦安装成功,那么你就能通过代码来控制用户、角色和个性化设置。
在这篇文章中, 我打算为asp.net的成员管理创建一个数据库, 在做这个之前,必须先安装.net framwork和asp.net .
我们在SQL SERVER中先创建一个数据库“MembershipDB”:
这是个空的数据库,除了默认的系统表,什么都没有。
ASP.Net提供了一个有用的工具,“aspnet_regsql.exe”, 利用它可以帮助你创建成员管理相关的表,存储过程等。你可以在目录“<windowsDirectory>\Microsoft.Net\Framework\<version>\ ”下找到,如果你是默认安装在C盘,这个工具在.Net 4的路径是:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
打开命令行窗口,并将路径切换到上面提到的目录,输入aspnet_regsql in 。(你也可以打开VISUAL STUDION提供的COMMAND PROMPT工具)
这时候,会弹出SQL注册向导。
点击 next
确保数据库连接信息的准确性,现在,选择数据库“MembershipDB”
确认
点击 next
点击结束,退出向导。
检查数据库, 你会看到,这个工具已经帮助我们创建了Membership表和存储过程等。
这个向导工具非常易于使用,但它也有一些不足,比如,你不能单独选择某个特性,有时候,我只想使用成员管理和角色管理,但是你不能在这个向导里进行配置,正常情况下,管理员都倾向作用命令行,aspnet_regsql 也支持在命令行里执行,下面列出了aspnet_regsql 工具常用的参数信息:
Parameter | Description |
-E | 用当前windows 用户凭证来验证 |
-S | SQL Server 实例 |
-d | 数据库名 |
-C | 连接字符串,如果用这个参数,你就不需要单独指定数据器实例 |
-A all|m|r|p|c|w | A代表增加,其它关键字可以组合使用,比如,如果你只想安装membership 和roles,使用-A mr 支持的选项: all – 所有功能特性 m – Membership r – roles p – profiles c- personalization w – SQL web events |
-R all|m|r|p|c|w | 移动指定的功能特性 |
-? | 列出工具支持的所有参数 |
看些例子
1. 从数据库中,移除所有的功能
命令: aspnet_regsql.exe -E -S sp2010_db -R all -d MembershipDB
The command will ask you a confirmation, you need to enter y for confirming. If you check your database now, you will see the tables and stored procedures are removed from database.
系统会提示你确认,当你输入“y”确认,再检查数据库,这时个所有的表和存储过程都已经被删除
2.增加membership 和roles管理功能
aspnet_regsql.exe -E -S sp2010_db -A mr -d MembershipDB
检查数据库,你会看到只有成员和角色相关的信息被生成。
3.列出所有可用的选项
aspnet_regsql.exe -?
有点要注意的是:这些参数是大小敏感,aspnet_regsql.exe 是个很实用的工具,可以帮助开发人员快速创建表信息,正常情况下,开发者都需要在表中插入一些测试数据,有两种方式,可以让你增加新的用户和角色
1. ASP.Net Website Administration Tool
你可以在Visual Studio的项目中,启动这个管理工具,位于“project”菜单。
这个工具会使用machine.config里预先设置好的“LocalSQLServer”字符串来连接数据库,如果你打算用“ASP.Net configuration tool ”来连接你的数据库,必须在你的web.config 中重写“LocalSQLServer”,然后将数据库信息用你的替换。有点要注意,确保你使用了<clear/>或者<remove>来移除原先的定义,因为所有的配置信息都继承了machine.config,下面的连接字符串信息可以在 “ASP.Net configuration”中正常工作。
2. 使用SQL指定
你可以直接在SQL server 的IDE中直接运行SQL 命令来创建用户和角色:
--*****创建用户*****--
declare @now datetimeset @now= GETDATE()exec aspnet_Membership_CreateUser 'FormAuthApplication','admin1','pass@word1', '','admin1@contoso.com','','',1,@now,@now,0,0,null
-- 执行上面的命令,会创建用户名为“admin1 ”,密码“pass@word1 ”,应用程序名称“FormAuthApplication”,理论上,你可以在同个数据库中创建任意多个应用程序,而且每个应用程序拥有其自己的用户群,你只需要在创建用户的时候,指定好它的应用程序名称。
--*****创建角色*****--
--Create RoleEXEC aspnet_Roles_CreateRole ' FormAuthApplication', 'Admin'--为应用程序“FormAuthApplication”创建角色'Admin'
--*****将用户与角色关联*****--
EXEC aspnet_UsersInRoles_AddUsersToRoles ' FormAuthApplication', 'admin1', 'Admin', 8--将用户与角色关联
创建基于应用程序的成员管理功能是非常简单的事情,当然你也可以将成员管理与“form ”认证机制一起使用,来创建基于用户的认证体系。