溫故知新ASP.NET 2.0(C#)(6) - Membership&RoleManager

作者: webabcd  來源: 博客園  發布時間: 2008-09-16 17:58  閱讀: 5194 次  推薦: 1   原文鏈接   [收藏]  
 
[1] 溫故知新ASP.NET 2.0(C#)(6) - Membership&RoleManager
[2] 溫故知新ASP.NET 2.0(C#)(6) - Membership&RoleManager

系列文章導航:

溫故知新ASP.NET 2.0(C#)(1) - MasterPage(母版頁)

溫故知新ASP.NET 2.0(C#)(1) - MasterPage(母版頁)

溫故知新ASP.NET 2.0(C#)(2) - Themes(主題)

溫故知新ASP.NET 2.0(C#)(3) - SiteMap(站點地圖)

溫故知新ASP.NET 2.0(C#)(4) - 緩存&SqlCacheDependency

溫故知新ASP.NET 2.0(C#)(5) - Localization

溫故知新ASP.NET 2.0(C#)(8) - DataSourceControl

溫故知新ASP.NET 2.0(C#)(6) - Membership&RoleManager

溫故知新ASP.NET 2.0(C#)(7) - Profile

溫故知新ASP.NET 2.0(C#)(8) - DataSourceControl

 

介紹
  現在 ASP.NET 2.0 提供了對成員資格(用戶名/密碼憑據存儲)和角色管理服務的內置支持。由于所有這些服務都是提供程序驅動的(Provider),因此可以方便地用您自己的自定義實現替換。

關鍵
  1、基于Windows的身份驗證將<system.web>元素下的<authentication> 設置為 Windows;基于Forms的身份驗證將<system.web>元素下的<authentication> 設置為 Forms。

  2、基于Forms的身份驗證時,設置<system.web>元素下的<authentication> 元素的 <forms> 子元素,示例如下,僅為說明

Code

 

<forms>元素的屬性說明如下
1) cookieless - 身份驗證可以將 Forms 身份驗證票存儲在 Cookie 中也可以以無 Cookie 的表示形式存儲在 URL 上。有效值如下:
  ·UseDeviceProfile - 默認值表示 ASP.NET 根據預先計算得到的瀏覽器配置文件來確定存儲票證的位置。
  ·AutoDetect - 選項使 ASP.NET 動態確定瀏覽器是否支持 Cookie。
  ·UseUri - 強制實施無 Cookie 票證
  ·UseCookies - 強制實施有 Cookie 票證。
2) defaultUrl - 指定在成功登錄后,請求將重定向到的默認 URL。
3) domain - 指定包含 Forms 身份驗證票的 HttpCookie 的 Domain 屬性的值。顯式設置此屬性可使應用程序共享同一個 Cookie,前提是這些應用程序共享某個 DNS 命名空間的一個公共部分(例如,如果 domain 屬性設置為“cnblogs.com”,則 webabcd.cnblogs.com 和 dudu.cnblogs.com可以共享一個 Cookie)。
4) enableCrossAppRedirects - Forms 身份驗證允許以查詢字符串變量或窗體 POST 變量的形式在應用程序之間傳遞 Forms身份驗證票。將此屬性設置為 true 可使 FormsAuthenticationModule 能夠從查詢字符串或窗體 POST 變量提取票證。
5) loginUrl - 指定未經身份驗證的用戶的請求將被重定向到的 URL。該 URL 可以在同一臺計算機上或在遠程計算機上。如果是在遠程計算機上,則兩臺計算機上 machineKey 配置元素中的 decryptionkey 和 validationKey 屬性都需要使用相同的值。
6) name - 用于身份驗證的 HTTP Cookie 的名稱。注意,如果多個應用程序需要在一臺計算機上使用基于窗體的身份驗證服務,并且每個應用程序都希望由應用程序隔離 Forms 身份驗證 Cookie,則每個應用程序都應配置一個唯一的 Cookie 值。為避免在 URL 中產生依賴項,在設置身份驗證 Cookie 時,ASP.NET 還使用“/”作為 Path 值,以便將這些 Cookie 發送回站點上的每個應用程序。
7) path - 用于發出的 Cookie 的路徑。默認值為“/”,以避免路徑中大小寫不匹配的造成的困難,因為在返回 Cookie 時,瀏覽器是嚴格區分大小寫的。共享服務器環境中的應用程序應使用此指令來維護專用 Cookie。(它們還可以使用 API 在運行時指定路徑來發出 Cookie。)
8) protection - 用于保護 Cookie 數據的方法。有效值如下:
  ·All - 同時使用數據驗證和加密來保護 Cookie。所配置的數據驗證算法是基于 <machinekey> 元素的。如果密鑰足夠長(48 個字符),默認情況下將使用 AES 進行加密。All 是默認(和建議)值。
  ·None - 用于僅將 Cookie 用于個性化設置并且安全性要求不高的站點。加密和驗證都可以被禁用。盡管以此方式使用 Cookie 需謹慎,但對于使用 .NET Framework 實現個性化設置的任何方法,此設置提供了最佳性能。
  ·Encryption - 使用 AES、TripleDES 或 DES 加密 Cookie,但不對 Cookie 進行數據驗證。這類 Cookie 容易受到精心選擇的純文本的攻擊。
  ·Validation - 不加密 Cookie 的內容,但驗證 Cookie 數據在傳輸過程中是否未被更改。若要創建 Cookie,驗證密鑰在緩沖區中與 Cookie 數據連接,并且計算出 MAC 并將其追加到輸出的 Cookie。
9) requireSSL - 如果設置為 true,則 Forms 身份驗證會設置 Forms 身份驗證 Cookie 的安全位。兼容的瀏覽器只將 Cookie 通過 SSL 連接發送回 ASP.NET。注意,如果使用無 Cookie Forms 身份驗證,則此設置無效。
10) slidingExpiration - 如果設置為 true,則 Forms 身份驗證將定期更新 Forms 身份驗證票的生存期。無論票證是包含在 Cookie 中,還是以無 Cookie 的格式包含在 URL 中,都會進行此操作。
11) timeout - 時間量(以整數分鐘為單位),經過該時間量之后,Cookie 則會過期。默認值是 30。超時屬性是一個可調值,從收到上次請求的時間開始計算,它將在 n 分鐘后過期。為了避免對性能產生負面影響,也為了避免那些打開了 Cookie 警告的應用程序產生多個瀏覽器警告,Cookie 在超時時間過半時更新。(這意味著在某些情況下可能會出現精度損失。) (注意:createPersistentCookie為true的話,則該屬性失效,過期時間將為50年)

3、授權用戶和角色設置<system.web>元素下的<authorization>元素,示例如下,僅為說明

Code

 

注:可以把授權用戶和角色設置的配置寫在某個文件夾內,則所做的配置只作用于該文件夾內,自動繼承外面的配置。
allow - 允許
deny - 拒絕
users - 用戶(多用戶用逗號隔開)
roles - 角色(多角色用逗號隔開)
verb - 指定http方法,post或get
* - 所有用戶
? - 匿名(未經過身份驗證的)用戶

4、分路徑設置授權用戶和角色設置,示例如下,僅為說明

Code

 

<location>元素的path屬性可以是文件夾也可以是某一文件

5、<membership>元素設置,示例如下,僅為說明

Code

 

enablePasswordRetrieval - 是否可以檢索用戶密碼(總是false)
enablePasswordReset - 是否允許用戶重置其密碼
requiresQuestionAndAnswer - 是否要求在創建用戶時提供密碼提示問題和答案
applicationName - 自定義成員資格提供程序的應用程序的名稱
requiresUniqueEmail - 電子郵件地址是否必須是唯一的
passwordFormat - 存儲的密碼的格式
maxInvalidPasswordAttempts - 指定允許的無效密碼或無效密碼提示問題答案嘗試的次數。當無效嘗試的次數達到配置的值時,將鎖定該成員資格用戶
minRequiredPasswordLength - 密碼所要求的最小長度
minRequiredNonalphanumericCharacters - 有效密碼中必須包含的最少特殊字符數
passwordAttemptWindow - 跟蹤失敗的嘗試所用的時間(以分鐘為單位)。每當發生另一次失敗時都將重置窗口。如果達到了允許的無效密碼或密碼提示問題答案的最大嘗試次數,將鎖定成員資格用戶
passwordStrengthRegularExpression - 用于驗證密碼的正則表達式

6、<roleManager>元素設置,示例如下,僅為說明

Code

 

各屬性詳細說明參看MSDN,索引處查找“roleManager 元素”

7、使用加密密碼

Code

 

使用FormsAuthentication.HashPasswordForStoringInConfigFile(String password, String passwordFormat)生成密碼
Clear - 密碼以明文形式存儲
SHA1 - 密碼存儲為 SHA1 摘要
MD5 - 密碼存儲為 MD5 摘要

8、使用用戶帳戶模擬,在<system.web>元素下加如下元素

 

Code

 

9、常用的就是如下這些東東
System.Web.Security.Membership,System.Web.Security.MembershipUser,System.Web.Security.Roles,Page.User
FormsAuthentication.RedirectFromLoginPage,FormsAuthentication.SetAuthCookie,FormsAuthentication.SignOut
重寫那些Provider的話,參看源碼中微軟提供的示例

[第1頁][第2頁]
1
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()