用戶成員資格表
相信各位兄弟看了上面這張表,對大部分字段的意思都已瞭然於胸了。
老小弟在此只爲大家理一理剩下的“小部分字段”:
- PasswordFormat:密碼格式?其實是密碼加密方式,其.NET類型爲MembershipPasswordFormat枚舉。
下面列出 MembershipPasswordFormat 枚舉的3個值:
Clear 不加密;
Encrypted 使用web.config中machineKey指定的方法加密/解密;
Hashed 使用單向 Salted 哈希技術進行加密(注意是單向加密,所以密碼是無法檢索的)。
PasswordSalt:上面提到單向 Salted 哈希技術在加密時會隨機生成一個Salt,該字段就是存放這個Salt值的 。 - MobilePIN:手機PIN碼,現在還不知道有什麼用。參見基本用戶表(aspnet_Users)中的MobileAlias字段。
- IsApproved:微軟的定義是:表示是否可以對成員資格用戶進行身份驗證。
我的理解是:是否對用戶啓用成員資格身份驗證,在設置爲不啓用的情況下(其實就是禁用),
即使用戶提供了正確的用戶名和密碼也是無法成功登錄的。 - FailedPasswordAttemptCount:連續登錄失敗的次數(用戶名正確,密碼無效),
和web.config中設置的maxInvalidPasswordAttempts值相比較決定是否鎖定用戶成員資格帳戶。
FailedPasswordAttemptWindowStart:記錄首次登錄失敗的時間。 - FailedPasswordAnswerAttemptCount:連續回答密碼問題失敗的次數。
FailedPasswordAnswerAttemptWindowStart :記錄首次失敗的時間,
和web.config中設置的passwordAttemptWindow值相比較決定是否鎖定用戶成員資格帳戶。
下面再貼出web.config中有關用戶成員資格的片段,
所有以顏色Fuchsia標註的都是SqlMembershipProvider的屬性。
所有以顏色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>
...
<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>