開發日誌:使用Asp.Net中的”Forms”驗證方式,操作使用者權限

來源:互聯網
上載者:User

一、web.config設定

 

<machineKey validationKey="DD305F238C8F26103323F10B1A655ED9FA7DBB7A" decryptionKey="70DE128000E565A7F8441A4C091C11EC8C5BB9B4D4EDA7A1" validation="SHA1"/>
<authentication mode="Forms">
<forms name="SKAPP.ASPXAUTH" loginUrl="~/login.aspx" protection="All" timeout="10" path="/"/>
</authentication>

 

1、authentication

作用:配置 ASP.NET 身分識別驗證支援(為Windows、Forms、PassPort、None四種)。該元素只能在電腦、網站或應用程式層級聲明。<authentication> 元素必需與<authorization> 節配合使用。

樣本:

以下樣本為基於表單(Forms)的身分識別驗證配置網站,當沒有登陸的使用者訪問需要身分識別驗證的網頁,網頁自動跳轉到登陸網頁。

<authentication mode="Forms" >
<forms loginUrl="logon.aspx" name=".FormsAuthCookie"/>

</authentication>

其中元素loginUrl表示登陸網頁的名稱,name表示Cookie名稱。

 

2、machineKey

作用:元素對密鑰進行配置,以便將其用於對 Forms 身分識別驗證 Cookie 資料和檢視狀態資料進行加密和解密,並將其用於對進程外工作階段狀態標識進行驗證


屬性

 

屬性 說明

decryption

可選的 String 屬性。

指定用於對資料進行解密的雜湊演算法的類型。

此屬性可以為下列可能值之一。

說明

Auto

指定 ASP.NET 基於配置的預設設定來確定使用哪個解密演算法。這是預設值。

AES

指定 ASP.NET 使用 AES (Rijndael) 演算法來對資料進行解密。AES 是用於對資料進行解密的預設演算法。

3DES

指定 ASP.NET 使用 TripleDES 演算法來對資料進行解密。TripleDES (3DES) 演算法使用 DES 演算法的三次連續迭代。

此屬性是 .NET Framework 2.0 版中的新屬性。

預設值為 "Auto"

decryptionKey

必選的 String 屬性。

指定用於對資料進行加密和解密的密鑰或者產生該密鑰的進程。當 validation 設定為 TripleDES 欄位時,該屬性用於 Forms 身分識別驗證加密和解密以及檢視狀態加密。

如果向此屬性添加 IsolateApps 修飾符,ASP.NET 將使用每個應用程式的應用程式識別碼 為每個應用程式產生一個唯一的加密金鑰。IsolateApps 也是預設值的一部分。

如果您需要在 Web 服務器網路(網路場)中支援配置,請手動設定此屬性以確保配置保持一致。

此屬性可以為下列可能值之一。

說明

AutoGenerate

指定 ASP.NET 產生隨機密鑰並將其儲存在 LSA 中。該值是預設值。如果向 decryptionKey 值添加 IsolateApps 修飾符,ASP.NET 將使用每個應用程式的應用程式識別碼 為每個應用程式產生一個唯一的加密金鑰。

value

指定一個手動分配的密鑰。該值必須手動設定為十六進位字串,以確保配置在整個網路場中保持一致。使用 DES 加密時,密鑰長度應該為 16 個字元;而使用三重 DES (3 DES) 加密時,密鑰長度應該為 48 個字元。如果要使用長度小於最大長度的密鑰,則應通過真正的隨機方式(例如,通過使用 RNGCryptoServiceProvider 類)來建立這些密鑰。只有在電腦使用 128 位加密的情況下,ASP.NET 才能使用三重 DES。如果向 decryptionKey 值添加 IsolateApps 修飾符,ASP.NET 將使用每個應用程式的應用程式識別碼 為每個應用程式產生一個唯一的加密金鑰。

預設值為 "AutoGenerate,IsolateApps"

validation

必選的 MachineKeyValidation 屬性。

指定用來驗證資料的加密類型。

此屬性可以為下列可能值之一。

說明

AES

指定 ASP.NET 使用 AES (Rijndael) 演算法來對資料進行解密。AES 是用於對資料進行解密的預設演算法。

MD5

指定 ASP.NET 使用 Message Digest 5 (MD5) 雜湊演算法。此演算法的效能比 SHA1 好。

SHA1

指定 ASP.NET 使用 SHA1 雜湊演算法。使用此演算法可增強安全性。

該值是預設值。

TripleDES

指定 ASP.NET 使用 TripleDES 演算法來對資料進行解密。TripleDES 演算法使用 DES 演算法的三次連續迭代。

在 .NET Framework 1.0 和 1.1 版中,該值為 "3DES"

預設值為 "SHA1"

validationKey

必選的 String 屬性。

指定用於驗證加密資料的密鑰。當 enableViewStateMAC 為 true 時,validationKey 用於建立訊息身分識別驗證代碼 (MAC),以確保檢視狀態未被篡改。validationKey 還可用於產生進程外、應用程式特定的會話 ID,以確保每個會話具有獨立的工作階段狀態變數。

如果向 ValidationKey 值添加 IsolateApps 修飾符,ASP.NET 將使用每個應用程式的應用程式識別碼 為每個應用程式產生一個唯一的加密金鑰。IsolateApps 也是預設值的一部分。

如果您需要在 Web 服務器網路(網路場)中支援配置,請手動設定 ValidationKey 屬性以確保配置保持一致。

validationKey 屬性可以為下列可能值之一。

說明

AutoGenerate

指定 ASP.NET 產生隨機密鑰並將其儲存在 LSA 中。此選項是預設值。如果向 validationKey 值添加 IsolateApps 修飾符,ASP.NET 將使用每個應用程式的應用程式識別碼 為每個應用程式產生一個唯一的加密金鑰。

value

指定一個手動分配的密鑰。該值必須手動設定為十六進位字串,以確保配置在整個網路場中保持一致。使用 DES 加密時,密鑰長度應該為 16 個字元;而使用三重 DES 加密時,密鑰長度應該為 48 個字元。如果要使用長度小於最大長度的密鑰,則應通過真正的隨機方式(例如,通過使用 CryptographyRNGCryptoServiceProvider 類)來建立這些密鑰。只有在電腦使用 128 位加密的情況下,ASP.NET 才能使用三重 DES。如果向 validationKey 值添加 IsolateApps 修飾符,ASP.NET 將使用每個應用程式的應用程式識別碼 為每個應用程式產生一個唯一的加密金鑰。

預設值為 "AutoGenerate,IsolateApps"


二、記錄使用者資訊代碼

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, //票據版本號碼
MemberID + ";" + txtMemberNo.Text, //要記錄的使用者資訊,在這裡用多項資訊用“;”號分隔
DateTime.Now, //使用者資訊記錄時間
DateTime.Now.AddMinutes(30), //使用者資訊到期時間
true, //以Cookies的方式記錄使用者資訊
dr["Roles"].ToString(), //同時寫入記錄資訊的使用者其他資訊,這裡記錄了使用者權限
FormsAuthentication.FormsCookiePath //寫入Cookies的路徑
);

string hash = FormsAuthentication.Encrypt(ticket);//加密要寫入Cookies的使用者資訊

HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName, //要寫入的Cookies的名稱
hash //加密後的使用者資訊
);
 
if (ticket.IsPersistent) //如果使用者資訊儲存是持久性的
cookie.Expires = ticket.Expiration;//寫入Cookies的到期日期

Response.Cookies.Add(cookie);//寫入Cookies

 

三、讀取使用者資訊

 

 

 

代碼

if(HttpContext.Current.User.Identity.IsAuthenticated)//使用者是否通過驗證
{
string[] parts = HttpContext.Current.User.Identity.Name.Split(';');//返回記錄的使用者資訊
return Convert.ToInt32(parts[0]);
}
else
return null;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.