惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学
G
Google Developers Blog
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
J
Java Code Geeks
U
Unit 42
云风的 BLOG
云风的 BLOG
阮一峰的网络日志
阮一峰的网络日志
N
Netflix TechBlog - Medium
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
Docker
V
Visual Studio Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Help Net Security
V
V2EX
T
Tailwind CSS Blog

博客园 - wangyan

[转]程序员需要具备的基本技能 LumaQQ.NET For Visual Studio 2005 代码下载 [转]今天你多态了吗? [转]理解C#值类型与引用类型 C#抽象工厂模式的几种实现方法及比较 在C#中使用钩子:按下Alt+F4时使窗口最小化 ASPNETDB 存储过程(4) 个性化用户配置部分 ASPNETDB 存储过程(3) 角色管理部分 ASPNETDB 存储过程(2) 成员资格管理部分 ASPNETDB 存储过程(1) 基本及杂类 ASPNETDB 表和视图(3) 个性化用户配置、页面个性化设置 表 和视图 ASPNETDB 数据库关系图、表和视图(1) 基本表和独立表 更改login控件对密码安全性的要求 加密解密、信息摘要 Web网站开发设计中常用的技巧 统计在线用户列表 for .net WebForm ASP.NET中怎样实现在线人数的显示 ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题 软件架构师之路
ASPNETDB 表和视图(2) 用户成员资格和角色管理 表
wangyan · 2007-12-05 · via 博客园 - wangyan

用户成员资格表


相信各位兄弟看了上面这张表,对大部分字段的意思都已了然于胸了。
老小弟在此只为大家理一理剩下的“小部分字段”:

  1. PasswordFormat:密码格式?其实是密码加密方式,其.NET类型为MembershipPasswordFormat枚举。
    下面列出 MembershipPasswordFormat 枚举的3个值:
      Clear          不加密;
      Encrypted   使用web.config中machineKey指定的方法加密/解密;
      Hashed       使用单向 Salted 哈希技术进行加密(注意是单向加密,所以密码是无法检索的)。

    PasswordSalt:上面提到

    单向 Salted 哈希技术在加密时会随机生成一个Salt,该字段就是存放这个Salt值的 。
  2. MobilePIN:手机PIN码,现在还不知道有什么用。参见基本用户表(aspnet_Users)中的MobileAlias字段。
     
  3. IsApproved:微软的定义是:表示是否可以对成员资格用户进行身份验证。
    我的理解是:是否对用户启用成员资格身份验证,在设置为不启用的情况下(其实就是禁用),
    即使用户提供了正确的用户名和密码也是无法成功登录的。
  4. FailedPasswordAttemptCount:连续登录失败的次数(用户名正确,密码无效),
    和web.config中设置的maxInvalidPasswordAttempts值相比较决定是否锁定用户成员资格帐户。

    FailedPasswordAttemptWindowStart:记录首次登录失败的时间。

  5. FailedPasswordAnswerAttemptCount:连续回答密码问题失败的次数。

    FailedPasswordAnswerAttemptWindowStart :记录首次失败的时间,
    和web.config中设置的passwordAttemptWindow值相比较决定是否锁定用户成员资格帐户。

下面再贴出web.config中有关用户成员资格的片段,
所有以颜色Fuchsia标注的都是SqlMembershipProvider的属性。

<system.web>
  ...
  <machineKey
     validationKey="AutoGenerate,IsolateApps"
     decryptionKey="AutoGenerate,IsolateApps"
     validation="SHA1" 
  />
  ...
  <connectionStrings>
    <add name="SqlSrvConnectionString" connectionString="..."/>
  </connectionStrings>
  ...
  <membership defaultProvider="SqlSrvMembershipProvider"> 
    <providers>
      <add name="SqlSrvMembershipProvider"
        type="System.Web.Security.SqlMembershipProvider"
        connectionStringName="SqlSrvConnectionString"
        applicationName="WebShop" 
        commandTimeout="30"
        description="SqlSrvMembershipProvider"
        enablePasswordRetrieval="false"
        enablePasswordReset="true"
        requiresQuestionAndAnswer="true"
        requiresUniqueEmail="false"
        passwordFormat="Hashed"
        maxInvalidPasswordAttempts="5"
        passwordAttemptWindow="10"
        minRequiredPasswordLength="6"
        minRequiredNonalphanumericCharacters="0"
        passwordStrengthRegularExpression=""/>
   </providers>
  </membership>
  ...
</system.web>

角色表

用户与角色关联表


上面两个有关角色管理的表,更是一目了然。如果要多说几句的话,那就是通过
aspnet_UsersInRoles这个关联表把用户表和角色表之间的多对多关系转化为两个一对多的关系,
而这正是关系数据库所要求的。

特别注意,如果你要为你的用户添加角色管理,在web.config中必须显式启用(enabled="true"),
在默认情况下,用户角色是不启用。

web.config片段:
<system.web>
  ...
  <roleManager enabled="true">
    ...
  <roleManager/>
  ...
</system.web>