用 %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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)