ASPNETDB 表和视图(2) 用户成员资格和角色管理 表

来源:互联网 发布:meta数据 编辑:程序博客网 时间:2024/05/14 17:53
用户成员资格表

相信各位兄弟看了上面这张表,对大部分字段的意思都已了然于胸了。
老小弟在此只为大家理一理剩下的“小部分字段”:
  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 connectionString="..."/>
  </connectionStrings>
  ...
  <membership defaultProvider="SqlSrvMembershipProvider"> 
    <providers>
      <add
        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>