用 %systemroot%\Microsoft.NET\Framework\ versionNumber 文件夹中的 Aspnet_regsql.exe 的可以安装一个成员资格服务的数据库,不知道要如何称呼,我暂时称之为成员资格服务库

用PowderDesigner反向工程获取了所有的表结构,如下:

/*

aspnet_Applications

MS设计成成员资格可以为多个系统使用,同时一个系统的用户名可以和例外系统的用户名重复,所以有了这张表。

这个表的ApplicationName和Description在系统的Web.Config设置MembershipProvider的时候可以定义。

本系统都统一使用ZjtaApplication

*/
create table dbo.aspnet_Applications (
   ApplicationName      nvarchar(256)        collate Chinese_PRC_CI_AS not null,
   LoweredApplicationName nvarchar(256)        collate Chinese_PRC_CI_AS not null,
   ApplicationId        uniqueidentifier     not null constraint DF__aspnet_Ap__Appli__08EA5793 default newid(),
   Description          nvarchar(256)        collate Chinese_PRC_CI_AS null
)
/*

用户的账户信息

*/

Create table dbo.aspnet_Membership (
   ApplicationId        uniqueidentifier     not null,
   UserId               uniqueidentifier     not null,  --用成员资格访问不知道如何获取这个Id
   Password             sysname              collate Chinese_PRC_CI_AS not null,
   PasswordFormat       int                  not null constraint DF__aspnet_Me__Passw__239E4DCF default (0),
   PasswordSalt         sysname              collate Chinese_PRC_CI_AS not null,
   MobilePIN            nvarchar(16)         collate Chinese_PRC_CI_AS null,
   Email                nvarchar(256)        collate Chinese_PRC_CI_AS null,
   LoweredEmail         nvarchar(256)        collate Chinese_PRC_CI_AS null,
   PasswordQuestion     nvarchar(256)        collate Chinese_PRC_CI_AS null,
   PasswordAnswer       sysname              collate Chinese_PRC_CI_AS null,
   IsApproved           bit                  not null, --如果可以对用户进行身份验证,则为 true;否则为 false。用这个代替当前用户是否有效

   IsLockedOut          bit                  not null,
   CreateDate           datetime             not null,
   LastLoginDate        datetime             not null,
   LastPasswordChangedDate datetime             not null,
   LastLockoutDate      datetime             not null,
   FailedPasswordAttemptCount int                  not null,
   FailedPasswordAttemptWindowStart datetime             not null,
   FailedPasswordAnswerAttemptCount int                  not null,
   FailedPasswordAnswerAttemptWindowStart datetime             not null,
   Comment              ntext                collate Chinese_PRC_CI_AS null
)

/*==============================================================*/
/* Table: aspnet_Paths            

应该是存储各个系统的入口地址,本系统不涉及                              */
/*==============================================================*/
create table dbo.aspnet_Paths (
   ApplicationId        uniqueidentifier     not null,
   PathId               uniqueidentifier     not null constraint DF__aspnet_Pa__PathI__5BE2A6F2 default newid(),
   Path                 nvarchar(256)        collate Chinese_PRC_CI_AS not null,
   LoweredPath          nvarchar(256)        collate Chinese_PRC_CI_AS not null
)
go

/*==============================================================*/
/* Table: aspnet_PersonalizationAllUsers 

该表不知道干什么用的,先不理财                       */
/*==============================================================*/
create table dbo.aspnet_PersonalizationAllUsers (
   PathId               uniqueidentifier     not null,
   PageSettings         image                not null,
   LastUpdatedDate      datetime             not null
)
go

/*==============================================================*/
/* Table: aspnet_PersonalizationPerUser     

也不知道干什么用的                    */
/*==============================================================*/
create table dbo.aspnet_PersonalizationPerUser (
   Id                   uniqueidentifier     not null constraint DF__aspnet_Perso__Id__6754599E default newid(),
   PathId               uniqueidentifier     null,
   UserId               uniqueidentifier     null,
   PageSettings         image                not null,
   LastUpdatedDate      datetime             not null
)
go

/*==============================================================*/
/* Table: aspnet_Profile

存储用户的配置属性                                        */
/*==============================================================*/
create table dbo.aspnet_Profile (
   UserId               uniqueidentifier     not null,
   PropertyNames        ntext                collate Chinese_PRC_CI_AS not null,
   PropertyValuesString ntext                collate Chinese_PRC_CI_AS not null,
   PropertyValuesBinary image                not null,
   LastUpdatedDate      datetime             not null
)
go

/*==============================================================*/
/* Table: aspnet_Roles 

角色列表                                         */
/*==============================================================*/
create table dbo.aspnet_Roles (
   ApplicationId        uniqueidentifier     not null,
   RoleId               uniqueidentifier     not null constraint DF__aspnet_Ro__RoleI__44FF419A default newid(),
   RoleName             nvarchar(256)        collate Chinese_PRC_CI_AS not null,
   LoweredRoleName      nvarchar(256)        collate Chinese_PRC_CI_AS not null,
   Description          nvarchar(256)        collate Chinese_PRC_CI_AS null
)
go

/*==============================================================*/
/* Table: aspnet_SchemaVersions    

不知道啥用处,应该跟本系统无关                             */
/*==============================================================*/
create table dbo.aspnet_SchemaVersions (
   Feature              sysname              collate Chinese_PRC_CI_AS not null,
   CompatibleSchemaVersion sysname              collate Chinese_PRC_CI_AS not null,
   IsCurrentVersion     bit                  not null
)
go

/*==============================================================*/
/* Table: aspnet_Users

用户信息表,包括用户名                                          */
/*==============================================================*/
create table dbo.aspnet_Users (
   ApplicationId        uniqueidentifier     not null,
   UserId               uniqueidentifier     not null constraint DF__aspnet_Us__UserI__0EA330E9 default newid(),
   UserName             nvarchar(256)        collate Chinese_PRC_CI_AS not null,
   LoweredUserName      nvarchar(256)        collate Chinese_PRC_CI_AS not null,
   MobileAlias          nvarchar(16)         collate Chinese_PRC_CI_AS null constraint DF__aspnet_Us__Mobil__0F975522 default null,
   IsAnonymous          bit                  not null constraint DF__aspnet_Us__IsAno__108B795B default (0),
   LastActivityDate     datetime             not null
)
go

/*==============================================================*/
/* Table: aspnet_UsersInRoles 
用户和角色的对应表                                  */

/*==============================================================*/
create table dbo.aspnet_UsersInRoles (
   UserId               uniqueidentifier     not null,
   RoleId               uniqueidentifier     not null
)
go

/*==============================================================*/
/* Table: aspnet_WebEvent_Events 

不知道如何用                               */
/*==============================================================*/
create table dbo.aspnet_WebEvent_Events (
   EventId              char(32)             collate Chinese_PRC_CI_AS not null,
   EventTimeUtc         datetime             not null,
   EventTime            datetime             not null,
   EventType            nvarchar(256)        collate Chinese_PRC_CI_AS not null,
   EventSequence        decimal(19)          not null,
   EventOccurrence      decimal(19)          not null,
   EventCode            int                  not null,
   EventDetailCode      int                  not null,
   Message              nvarchar(1024)       collate Chinese_PRC_CI_AS null,
   ApplicationPath      nvarchar(256)        collate Chinese_PRC_CI_AS null,
   ApplicationVirtualPath nvarchar(256)        collate Chinese_PRC_CI_AS null,
   MachineName          nvarchar(256)        collate Chinese_PRC_CI_AS not null,
   RequestUrl           nvarchar(1024)       collate Chinese_PRC_CI_AS null,
   ExceptionType        nvarchar(256)        collate Chinese_PRC_CI_AS null,
   Details              ntext                collate Chinese_PRC_CI_AS null
)
go

 

这个库提供了诸如用户名、密码等基本功能,还可以任意如入用户对应的扩展属性,如公司名称、部门名称,应该说对于一般的网站应用,管理管理注册客户应该都能解决了,但用在系统内部可能需要扩充。

我的用户首先属于一家单位,单位还要分类,单位还有部门,部门有排列顺序,即使用户也有配列顺序,而且数量在10万数量级别的,仅仅利用成员资格服务里面的表不能解决管理员批量管理用户和系统开发的实际需求,所以新建一些表进行扩充,同时对一些数据进行冗余(如个人的资料,既在自己的表里面保存,同时也保存在Profile里面)

辅助库包含的表如下:

 

 /*==============================================================*/
/* Table: InfoUnit                                              */
单位信息表

/*==============================================================*/
create table InfoUnit (
   Id                   uniqueidentifier     not null,
   Name                 nvarchar(50)         null,

   TypeId               int                  null,--单位列表,外键

   AreaCode             int                  null,--行政区划,如浙江省330000
   SName                xml                  null,--单位简称,可以有多个
   NameSM               nvarchar(20)         null, --单位的拼音的声母,抱歉“声母”的英文不知道怎么写,就用了声母代替
   SNameSM              xml                  null,
   Address              nvarchar(50)         null,
   Location             geometry             null,
   Tel                  nvarchar(50)         null,
   Fax                  nvarchar(50)         null,
   Email                nvarchar(50)         null,
   Url                  nvarchar(50)         null,
   ParentId             uniqueidentifier     null, --上级单位
   CreateUserName       nvarchar(20)         null,
   CreateTrueName       nvarchar(20)         null,
   CreateDate           datetime             null,
   UpdateUserName       nvarchar(20)         null,
   UpdateTrueName       nvarchar(20)         null,
   UpdateDate           datetime             null,
   ts                   timestamp            null, --时间戳
   constraint PK_INFOUNIT primary key (Id)
)
go

/*==============================================================*/
/* Table: DUnitType                                             */
单位类别字典

/*==============================================================*/
create table DUnitType (
   Id                   int                  not null,
   UnitType             nvarchar(10)         null,
   constraint PK_DUNITTYPE primary key (Id)
)
go

 *==============================================================*/
/* Table: InfoDepart                                            */
部门信息

/*==============================================================*/
create table InfoDepart (
   Id                   uniqueidentifier     not null,
   SortId               int                  null,
   Name                 nvarchar(50)         null,
   SName                xml                  null,
   NameSM               nvarchar(20)         null,
   SNameSM              xml                  null,
   Tel                  nvarchar(50)         null,
   Fax                  nvarchar(50)         null,
   Email                nvarchar(50)         null,
   Url                  nvarchar(50)         null,
   ParentId             xml                  null, --对应的上级部门,可能有多个
   CreateUserName       nvarchar(20)         null,
   CreateTrueName       nvarchar(20)         null,
   CreateDate           datetime             null,
   UpdateUserName       nvarchar(20)         null,
   UpdateTrueName       nvarchar(20)         null,
   UpdateDate           datetime             null,
   ts                   timestamp            null,
   constraint PK_INFODEPART primary key (Id)
)
go

 

 /*==============================================================*/
/* Table: InfoUser                                              */
用户信息辅助表

/*==============================================================*/
create table InfoUser (
   UserName             nvarchar(256)    not null,--跟用户信息表中的UserName对应
   TrueName             nvarchar(10)         null,
   SortId               int                  null, --用户在部门中的序号
   NameSM               nvarchar(10)         null,
   Title                nvarchar(20)         null,
   TitleLevel           int                  null, --级别序号,拟设成 1高级,2副高级,3中级,4,一般
   Contact              xml                  null,--联系方式
   UnitId               uniqueidentifier     null,
   UnitName             nvarchar(50)         null,
   DepartId             uniqueidentifier     null,
   DepartName           nvarchar(20)         null,
   CreateUserName       nvarchar(20)         null,
   CreateTrueName       nvarchar(20)         null,
   CreateDate           datetime             null,
   UpdateUserName       nvarchar(20)         null,
   UpdateTrueName       nvarchar(20)         null,
   UpdateDate           datetime             null,
   ts                   timestamp            null,
   constraint PK_INFOUSER primary key (Id)
)

 

 

*==============================================================*/
/* Table: InfoRole                                                 */
角色辅助表

/*==============================================================*/
create table InfoRole (
   Name                 nvarchar(256)        not null,
   TypeId               int                  null, --单位类型
   [Desc]               nvarchar(50)         null, --与角色表冗余
   AppId                uniqueidentifier     null, --该角色能运行的程序
   CreateUserName       nvarchar(20)         null,
   CreateTrueName       nvarchar(20)         null,
   CreateDate           datetime             null,
   UpdateUserName       nvarchar(20)         null,
   UpdateTrueName       nvarchar(20)         null,
   UpdateDate           datetime             null,
   constraint PK_DROLE primary key (Name)
)
go

*==============================================================*/
/* Table: InfoApp                                               */

程序信息表
/*==============================================================*/
create table InfoApp (
   Id                   uniqueidentifier     not null,
   Name                 nvarchar(15)         null,
   [Desc]               nvarchar(50)         null,
   IsWebApp             bit                  null,
   StartLocation        nvarchar(200)        null,
   CreateUserName       nvarchar(20)         null,
   CreateTrueName       nvarchar(20)         null,
   CreateDate           datetime             null,
   UpdateUserName       nvarchar(20)         null,
   UpdateTrueName       nvarchar(20)         null,
   UpdateDate           datetime             null,
   constraint PK_INFOAPP primary key (Id)
)
go