[Membership架构分析1] ASP.NET membership的表结构
转自:http://blog.sina.com.cn/s/blog_650b9ecc0100iqfo.html
1)表名:aspnet_Applications
说明:保存应用程序信息(系统名)
每一个不同的系统名都会生成一个唯一的ID,这个ID是与其它关联关系的外键。
|
字段名 |
类型 |
属性 |
说明 |
|
ApplicationName |
nvarchar(256) |
应用程序名 |
|
|
LoweredApplicationName |
nvarchar(256) |
小写的应用程序名 |
|
|
ApplicationId |
uniqueidentifier |
PK |
应用程序的id, GUID值 |
|
Description |
nvarchar(256) |
nullable |
应用程序的 描述 |
2)表名:aspnet_Users
说明:用户信息
用户表,只保存了用户ID基本不会变的信息。
|
字段名 |
类型 |
属性 |
说明 |
|
ApplicationId |
uniqueidentifier |
应用程序Id。通过ApplicationId字段与aspnet_Application关联,以此来区分用户是属于哪个系统的。 |
|
|
UserId |
uniqueidentifier |
PK |
用户Id |
|
UserName |
nvarchar(256) |
用户名。由于UserName字段本身并不是主键,所以它是可以有重复值的,但不是说一个系统允许存在相同的用户名。正是 ApplicationId字段来标识相同的用户名是属于不同的系统的。ApplicationId字段的作用就在于此,所以你可以看到很多表中都有这个 字段的存在。 |
|
|
LoweredUserName |
nvarchar(256) |
小写的用户名 |
|
|
MobileAlias |
nvarchar(16) |
移动电话的pin码(未使用) |
|
|
IsAnonymous |
bit |
是否为匿名用户 |
|
|
LastActivityDate |
datetime |
最后活动日期 |
3)表名:aspnet_Roles
说明:角色表
存储系统的所有角色,同样用ApplicationId来标识该角色属于哪个系统所有的。
|
字段名 |
类型 |
属性 |
说明 |
|
ApplicationId |
uniqueidentifier |
FK: appnet_Applications.ApplciationId |
应用程序Id |
|
RoleId |
uniqueidentifier |
PK |
角色Id |
|
RoleName |
nvarchar(256) |
角色名称 |
|
|
LoweredRoleName |
nvarchar(256) |
小的角色名称 |
|
|
Description |
nvarchar(256) |
nullable |
描述 |
4)表名:aspnet_UsersInRoles
说明:用户角色关系表
多对多的关系表,存储哪些用户属于哪些角色。
|
字段名 |
类型 |
属性 |
说明 |
|
UserID |
uniqueidentifier |
FK: aspnet_Users.UserId |
用户ID |
|
RoleID |
uniqueidentifier |
FK: aspnet_Roles.RoleId |
角色ID |
5)表名:aspnet_Membership
说明:成员信息
在aspnet_Membership表存储着一些用户的公共属性信息。根据不同的需求,我们可能还需要其它的一些自定义字段,在这种情况下最好不要直接修改这个表,而是应该新建一个表,或利用Profile功能来实现。
|
字段名 |
类型 |
属性 |
说明 |
|
ApplicationId |
uniqueidentifier |
FK: appnet_App lications. ApplciationId |
应用程序Id 标识用户属于哪个系统 |
|
UserId |
uniqueidentifier |
FK: aspnet_Users. UserID |
用户Id 与aspnet_Users关联的字段 |
|
Password |
nvarchar(128) |
加密或未加密的密码 |
|
|
PasswordFormat |
int |
存储密码的格式 (明文或使用的加密算法) |
|
|
PasswordSalt |
nvarchar(128) |
密码的Hash值 用于辅助密码验证的字段(不可逆算法进行密码验证时所需) |
|
|
MobilePIN |
nvarchar(16) |
手机PIN码 手机PIN码,同样可以唯一标 |
|
|
|
nvarchar(256) |
电子邮件地址 Email (可配置Email是否必须唯一) |
|
|
LoweredEmail |
nvarchar(256) |
小写的电子邮件地址 |
|
|
PasswordQuestion |
nvarchar(256) |
遗忘密码,密码安全问题(可配置是否必须) |
|
|
PasswordAnswer |
nvarchar(128) |
遗忘密码答案,密码安全问题答案 |
|
|
IsApproved |
bit |
用户是否已认证(为0时用户无法登录) |
|
|
IsLockedOut |
bit |
用户是否已锁定(可配置密码重试次数,超过则自动锁定该用户) |
|
|
CreateDate |
datetime |
创建时间 |
|
|
LastLoginDate |
datetime |
最后登录时间 |
|
|
LastPassword ChangedDate |
datetime |
最后修改密码的时间 |
|
|
LastLockoutDate |
datetime |
最后一次锁帐号的时间 |
|
|
FailedPassword AttemptCount |
int |
密码失败尝试次数 密码重试次数 |
|
|
FailedPassword AttemptWindowStart |
datetime |
密码失败尝试窗口打开时间 |
|
|
FailedPassword AnswerAttemptCount |
int |
安全密码重试次数 |
|
|
FailedPasswordAnswer AttemptWindowStart |
datetime |
遗失密码问题输入窗口打开时间 |
|
|
Comment |
ntext |
备注 |
6)表名:aspnet_Profile
说明:Profile对象存储表
存储着用户的一些个性化信息。由于个性化信息的字段是可变的,所以它采用了一种比较灵活的存储方式,类似于:property1:value1;property2:value2的形式(具体分隔符可能有误)来存储多个可变的属性值。再通过解析,分解出正确属性和值。
|
字段名 |
类型 |
属性 |
说明 |
|
UserId |
uniqueidentifier |
FK: aspnet_Users.UserId |
用户ID |
|
PropertyNames |
ntext |
属性名称 |
|
|
PropertyValuesString |
ntext |
字符串值 |
|
|
PropertyValuesBinary |
image |
二进制值 |
|
|
LastUpdatedDate |
datetime |
最后更新日期 |
Aspnet_Paths,aspnet_PersonalizationPerUser,aspnet_PersonalizationAllUsers:
这几个表组合起来存储个性化页面设置,配合WebPart使用。
7)表名:aspnet_Paths
说明:路径信息
|
字段名 |
类型 |
属性 |
说明 |
|
ApplicationId |
uniqueidentifier |
FK: appnet_Applications.ApplciationId |
应用程序Id |
|
PathId |
uniqueidentifier |
PK |
路径Id |
|
Path |
nvarchar(256) |
路径信息 |
|
|
LoweredPath |
nvarchar(256) |
小写的路径信息 |
8)表名:aspnet_PersonalizationAllUsers
|
字段名 |
类型 |
属性 |
说明 |
|
PathId |
uniqueidentifier |
FK: aspnet_Paths.PathId |
路径ID |
|
PageSetting |
ntext |
个性化设置 |
|
|
LastUpdatedDate |
datetime |
最后更新日期 |
9)表名:aspnet_PersonalizationPerUser
|
字段名 |
类型 |
属性 |
说明 |
|
Id |
uniqueidentifier |
PK |
ID |
|
PathID |
uniqueidentifier |
FK: aspnet_Paths.PathId |
路径ID |
|
UserID |
uniqueidentifier |
FK:aspnet_Users.UserId |
用户ID |
|
PageSetting |
ntext |
个性化设置 |
|
|
LastUpdatedDate |
datetime |
最后更新日期 |
另外两个表与用户管理没有直接关系的:
aspnet_WebEvent_Events,用于记录系统在运行过程中出现的一些异常信息,需配合Health monitor使用;
aspnet_SchemaVersions,用于记录当前的框架版本信息,默认已经有记录了
结语:
首先注册控件无非是将信息写入到membership表和users表。
其中在applications表中添加了应用程序记录,其中主要记录的是登录过程和profile的使用两个应用程序,而我们利用profile的时候自动插入到profile表中,里面利用的序列化非常有参考价值,因为可以通过它来存放对象等结构
[Membership架构分析1] ASP.NET membership的表结构的更多相关文章
- 7.使用EXPLAIN 来分析SQL和表结构_1
explain:查看执行计划 使用explain 关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的 分析你的查询语句或是表结构的性能瓶颈 使用explain 可以获 ...
- b2c项目基础架构分析(一)b2c 大型站点方案简述 已补充名词解释
我最近一直在找适合将来用于公司大型bs,b2b b2c的基础架构. 实际情况是要建立一个bs架构b2b.b2c的网站,当然还包括wap站点.手机app站点. 一.现有公司技术人员现状: 1.熟悉asp ...
- NopCommerce架构分析(转载)
原文 一,NopCommerce架构分析之开篇 NopCommerce是.net开源项目中比较成熟的一款业务应用框架,也是电子商务系统中的典范.所以很想多学习一下里面的设计和实现方式. 二,NopCo ...
- Equinox开源项目CQRS架构分析
CQRS架构下Equinox开源项目分析 一.DDD分层架构介绍 本篇分析CQRS架构下的Equinox开源项目.该项目在github上star占有2.4k.便决定分析Equinox项目来学习下CQR ...
- tomcat架构分析 (Session管理)
Session管理是JavaEE容器比较重要的一部分,在app中也经常会用到.在开发app时,我们只是获取一个session,然后向session中存取数据,然后再销毁session.那么如何产生se ...
- Magento架构分析,Magento MVC 设计分析
Magento架构分析,Magento MVC 设计分析 分类:Magento 标签:Magento MVC.Magento架构 669人浏览 Magento 采用类似 JAVA的架构,其扩展与稳定性 ...
- Flickr 网站架构分析
Flickr 网站架构分析 Flickr.com 是网上最受欢迎的照片共享网站之一,还记得那位给Windows Vista拍摄壁纸的Hamad Darwish吗?他就是将照片上传到Flickr,后而被 ...
- Android架构分析之Android消息处理机制(二)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android版本号:4.4.2 在上一篇文章中我们看了一个使用Handler处理Message消息的样例,本文我们 ...
- Qualcomm Android display架构分析
Android display架构分析(一) http://blog.csdn.net/BonderWu/archive/2010/08/12/5805961.aspx http://hi.baidu ...
随机推荐
- 联想 Thinkpad X230 SLIC 2.1 Marker
等了好久,终于等到了 X230 的 SLIC 2.1 的 Marker !特发帖备份... 基本情况 笔记本:Lenovo X230(i5+8G+500G) 操作系统:Windows 7 Pro x6 ...
- Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- afxcomctl32.h与afxcomctl32.inl报错
afxcomctl32.h与afxcomctl32.inl报错 编译公司一个几年前的老项目,是从VC6.0升级到VS2005的. 1.编译时报缺少头文件,于是附件包含目录,于是出现了以下报错: 1&g ...
- 报错:已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
SqlParameter[] sp = { new SqlParameter("@nGridID",SqlDbType.BigInt), new SqlParameter(&quo ...
- Docker的ubuntu镜像安装的容器无ifconfig和ping命令的解决
Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令 解决: apt-get update apt install net-tools # ifconfig apt ...
- 【读书笔记】2016.12.10 《构建高性能Web站点》
本文地址 分享提纲: 1. 概述 2. 知识点 3. 待整理点 4. 参考文档 1. 概述 1.1)[该书信息] <构建高性能Web站点>: -- 百度百科 -- 本书目录: 第1章 绪论 ...
- 腾讯开放平台 手机QQ登录 错误码:110406 解决办法
作者:Panda Fang 出处:http://www.cnblogs.com/lonkiss/p/4204284.html 原创文章,转载请注明作者和出处,未经允许不可用于商业营利活动 腾讯开发平台 ...
- MyEclipse web项目导入Eclipse,详细说明
最近导入一个MyEclipse的项目,具体是:spring4.1的web项目,同时遇到了一些问题,总结一下. 1.进入项目目录,找到.project文件,打开.增加一个<buildCommand ...
- x01.CodeBuilder: 生成代码框架
根据 Assembly 生成代码框架. 这是学习 AvalonEdit 的一个副产品.学习时,照着源代码新建文件夹,新建文件,添加方法与属性,虽然只是个框架,也要花费大量时间.为什么不让它自动生成呢? ...
- cookie 跨域访问的解决方案
Cookie 同域单点登录 最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下).但现在为了满足客户需求,在不使用控件情况下实现单点登录,先来介绍一下单点登录. ...