ASP.NET2.0學習6--角色控制與管理

角色控制與管理

 

認證與授權機制

使用用戶管理控件

成員資格與角色管理

 

一、ASP.NET 2.0 安全性

必要性

對於網站而言,用戶身份認證與權限管理是非常重要的部分。

通過用戶名和密碼,對用戶進行身份驗證,並指派他可訪問的資源,這部分工作一直都是網站開發的重要內容。

 

在另外一些情況下,需要根據用戶的身份進行權限識別,不同用戶訪問相同頁面,也需要顯示不同內容。

這涉及到用戶權限管理部分,也是網站開發的核心內容。

 

二、ASP.NET 2.0 角色控制概述

• ASP.NET 2.0membershiprolemanager能夠非常好的解決這個問題,不但可以對用戶的登陸信息進行統一管理,還可以就用戶的權限進行分類管理,讓開發者方便的就網站權限與安全性進行設定。

• ASP.NET 2.0Login控件更提供了一種非常方便的建造登陸與用戶管理信息的方法。

三、認證與授權

• ASP.NET通過與IIS協同工作來進行授權管理。共兩種身份認證方式

 1通過查詢acls列表或者許可證來判定該訪問是否擁有瀏覽的權利。

 2.通過URL認證

 

當用戶以訪問某網站的時候。兩種授權方式分別會進行不同的動作

第一種認證方式會根據用戶的登陸信息來判定asp.net針對該用戶所指定的系統帳號,然後再判斷該系統帳號是否對被請求的本地資源有訪問權限。

第二種身份認證方式通過檢查asp.net配置文件來進行授權認證。

 

• Asp.net的頁面認證方式中,可以使用以下三種方式進行身份認證。

通過修改config文件中的authentication屬性,可以配置不同的認證方式

 

1.使用PassPort SDK進行二次開發Passport

2.基於cookie的身份認證機制Forms

3.基於windows身份驗證,首先判斷windows用戶的身份和組

4.不進行授權與身份驗證None

 

描述取值

<configuration>

<system.web>

<authentication mode="Forms"/>  /forms方式

</system.web>

</configuration>

 

1Windows認證方式

• Window認證方式通過使用

windowsprincipal類對用戶的windows身份進行判定,然後根據用戶所屬的windows身份組來進行認證。

需要在wen.config里加上 <authentication mode="Windows"/>

 

2Form認證方式

• From認證方式是在窗體內提供用戶輸入ID和密碼的地方,並根據用戶輸入的ID和密碼進行身份認證。

• Form認證方式同時還使用cookie記錄用戶的信息,當用戶訪問其他頁面的時候,程序通過訪問cookie來獲得用戶的身份信息。

Form認證方式配置文件

<configuration>

<system.web>

<authentication mode="Forms"/> <authorization>

<forms name=".ASPXCOOKIEDEMO"

loginUrl="login.aspx" protection="All" timeout="30"

path="/">

<!-- protection="[All|None|Encryption|Validation]" -->

</forms>

<deny users="?" />

</authorization>

</system.web>

</configuration>

 

配置文件中的屬性意義如下表所示

ProtectionCookie被保存的方式

PathCookie的保存路徑

TimeOutCookie的存活時間默認值是30分鐘

NameCookie的名字,注意,如果一個服務器有很多應用的話,要給cookie其不同的名字

LoginUrl指定一個用於登陸的頁面

 

Protection屬性

• Protection是用來描述cookie的保存方式的,有下列四個可選擇項目

All--同時使用EncryptionValidation

Validation--監視cookie,保證傳輸過程中不會被監聽或者篡改。但是並不對cookie進行加密。

Encryption--使用des或者三層descookie進行加密,但是並不對cookie傳輸中是否被監聽或篡改進行監視

None--不使用任何方法保護cookie

 

使用文件記錄用戶的帳戶和密碼

用戶還可以通過指定可訪問的用戶名和密碼來指定訪問用戶。

• <authentication>

• <credentials passwordFormat="SHA1" >

• <user name="Mary"

password="94F85995C7492EEC546C321821AA4BECA

9A3E2B1"/>

• <user name="John"

password="5753A498F025464D72E088A9D5D6E87259

2D5F91"/>

• </credentials>

• </authentication>

 

在指定密碼的保存方式時,可以指定密碼的存放方式,有3種方式。如下表所示

使用MD5進行加密MD5

使用SHA1進行加密SHA1

不加密進行存儲Clear

 

用戶訪問還可以通過定製訪問規則來實現對用戶的角色分配。

• <authorization>

• <allow users="[email protected]" />

• <allow roles="Admins" />

• <deny users="*" />  //所有用戶禁用 如果是?表示匿名用戶禁用

• </authorization>

以上代碼指定只有[email protected]的用戶可以訪問該站點,並且該用戶具有的權限是管理員

 

web.config裏,同樣可以通過配置alldeny屬性來對訪問用戶的Id,訪問方法進行設定

• <allow VERB="POST" users="John,Mary" />

• <deny VERB="POST" users="*" />

• <allow VERB="GET" users="*" />

 

• Form認證演示

使用用戶管理控件

• Login,Loginstatus,CreateUserWizard控件

示例

• LoginView示例

• ChangePassword示例

 

四、成員管理

成員管理特性基於membershipmenbershipuser兩個類。可以使用membership類爲asp.net創建用戶

• membership類還可以完成以下工作 

建立一個新的membershipuser 

可以對用戶身份進行驗證

  找回一個membershipuser實例

  更新一個membershipuser實例

  通過不同條件尋找一個用戶

  獲得當前在線用戶數量

  刪除一個已經不再需要的帳戶

 訪問一個membership的屬性

 找回一個用戶的密碼

 修改一個用戶的密碼

 修改一個用戶的密碼問題以及密碼問題的答案

 爲一個已經因爲多次嘗試密碼失敗而鎖定的用戶解除鎖定。

 

角色管理

角色管理基於role類實現。

通過角色管理類,可以實現以下工作

新建一種角色

刪除一種角色

給一個用戶分配角色

去除一個用戶的角色

判斷用戶是否被授權給一個特殊的角色

在一種角色中尋找一個用戶

從一個用戶信息中獲得他所具有的角色信息

 

1.用戶管理

創建用戶

通過調用Membershipcreateuser方法,

可以創建用戶。需要注意的是membership的密碼要求長於7位,並且需要至少包括一個特殊字符。

 

用戶登陸以及訪問用戶屬性

下面使用Membershiip中的validateuser方法來確認用戶是否合法。

• Membership還提供了getuser方法返回一個membershipuser類,用以對獲得用戶的屬性信息。

 

用戶登陸

用戶帳戶信息顯示

 

更新用戶屬性

通過使用dataview和一個Membership相結合,可以方便的修改用戶的註冊信息。

更改用戶信息演示

 

解除鎖定

當用戶嘗試密碼次數過多時,系統會把用戶的帳戶鎖定,可以通過Membershipuserislockout屬性來判斷用戶是否被鎖定,如果用戶被鎖定了,可以使用unlockuser方法來解除鎖定。

解除用戶鎖定

 

刪除用戶

可以通過調用Membershipdeleteuser方法來刪除一個用戶。並通過返回值來判定刪除是否成功。

刪除用戶

 

2.角色管理

角色管理是基於認證用戶身份與權限的一種管理方式。下面的幾個例子使用角色管理

添加和刪除角色

通過使用rolescreateroledeleterole方法我們可以添加和刪除角色,同時還可以調用

 

爲用戶配置角色屬性

可以通過roles類的addusertoroleremoveuserfromrole方法來爲用戶指定一個角色或者移除一個角色

 

使用rolemanage對頁面進行授權

還可以通過使用role manage對指定角色的用戶進行頁面授權。

通過在web.config裏進行配置

用戶授權頁測試

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章