ASP.NET 2.0 中Forms安全認(rèn)證
更新時間:2009年12月10日 22:00:52 作者:
ASP.NET 中有一個完整的 Web 應(yīng)用程序或網(wǎng)站的用戶身份驗證系統(tǒng)
即:使用 Membership 類 + FormsAuthentication 一起使用以創(chuàng)建的用戶管理與認(rèn)證的系統(tǒng)。
當(dāng)然這兩部分都可以單獨(dú)使用,今天先著重后者,至于前者,我下一篇隨筆將會寫到。
ASP.NET 中提供了多種認(rèn)證方式,比如大名鼎鼎的Windows 身份驗證
Windows 身份驗證模式根據(jù) IIS 所提供的憑據(jù)將當(dāng)前 User 屬性值設(shè)置為 WindowsIdentity,但它不修改提供給操作系統(tǒng)的 Windows 標(biāo)識。提供給操作系統(tǒng)的 Windows 標(biāo)識用于進(jìn)行權(quán)限檢查(如 NTFS 文件權(quán)限檢查)或者用于使用集成安全性連接到數(shù)據(jù)庫。默認(rèn)情況下,此 Windows 標(biāo)識是 ASP.NET 進(jìn)程的標(biāo)識。在 Microsoft Windows 2000 和 Windows XP Professional 上,此標(biāo)識是 ASP.NET 輔助進(jìn)程的標(biāo)識,即本地 ASPNET 帳戶。在 Windows Server 2003 上,此標(biāo)識是 ASP.NET 應(yīng)用程序所屬的 IIS 應(yīng)用程序池的標(biāo)識。默認(rèn)情況下,此標(biāo)識是 NETWORK SERVICE 帳戶。
通過啟用模擬功能,可以將 ASP.NET 應(yīng)用程序的 Windows 標(biāo)識配置為 IIS 所提供的 Windows 標(biāo)識。也就是說,指示 ASP.NET 應(yīng)用程序模擬 IIS 為 Windows 操作系統(tǒng)驗證的所有任務(wù)(包括文件和網(wǎng)絡(luò)訪問)提供的標(biāo)識。(解釋來自MSDN Library)
還有一種常有的認(rèn)證即是 Forms 身份驗證
Forms 身份驗證使不要求 Windows 身份驗證的 Web 應(yīng)用程序可以進(jìn)行用戶和密碼驗證。使用 Forms 身份驗證時,用戶信息存儲在外部數(shù)據(jù)源中,例如Member 數(shù)據(jù)庫,或存儲在應(yīng)用程序的配置文件中。在用戶通過身份驗證后,F(xiàn)orms 身份驗證即會在 Cookie 或 URL 中維護(hù)一個身份驗證票證,這樣已通過身份驗證的用戶就無需在每次請求時都提供憑據(jù)了。
這樣一來就方便也安全了,那具體怎么完成Forms身份認(rèn)證的設(shè)置呢?
首先打開配置文件web.config
找到<system.web>節(jié)點(diǎn)下的 <authentication> 和 <authorization>節(jié)點(diǎn)加入
<system.web>
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<authentication>節(jié)點(diǎn)是設(shè)置認(rèn)證方式,這里我們制定 Forms
<forms>節(jié)點(diǎn)內(nèi)的屬性可以制定 認(rèn)證頁面(登錄頁面)、默認(rèn)頁面、是否使用cookie、認(rèn)證超時時間等等。
這里我們只指定認(rèn)證頁面 loginUrl="login.aspx"
<authorization> 節(jié)點(diǎn)是認(rèn)證節(jié)點(diǎn)
<deny> 是否認(rèn)節(jié)點(diǎn) 指定屬性 users="?"即為未經(jīng)過認(rèn)證的人都需要去認(rèn)證頁面進(jìn)行認(rèn)證
與之對應(yīng)的是<allow>允許節(jié)點(diǎn)
這樣一來思路就清晰了,無論用戶訪問什么頁面服務(wù)器會判斷用戶是否通過認(rèn)證,如果沒有轉(zhuǎn)到認(rèn)證頁面。
下一步將要確定在login.aspx.cs文件中如何完成我們認(rèn)證工作了
public void Login_OnClick(object sender, EventArgs args)
{
if (BLL.CheckLogin(this.Txbusername.Text,this.Txbuserpwd.Text ))
FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text,NotPublicCheckBox.Checked);
else
Msg.Text = "Login failed. Please check your user name and password and try again.";
}
這里的CheckLogin(用戶名,密碼) 方法是在邏輯層使用的驗證用戶是否合法的方法
當(dāng)然如果用 Membership類繼承的一些驗證方法會更簡單,但是在此不詳細(xì)說明了。
FormsAuthentication 類(終于提到主人公了),它所屬的命名空間為 System.Web.Security;
FormsAuthentication 是用來設(shè)置認(rèn)證的類,如果用戶合法,把用戶名保存在cookie中,之后用戶再次訪問或訪問其他頁面都無需再次認(rèn)證
它內(nèi)部的常用方法有
RedirectFromLoginPage(用戶名(string),是否把用戶名長期保存在coolie中(bool))
將經(jīng)過身份驗證的用戶重定向回最初請求的 URL 或默認(rèn) URL
SetAuthCookie(用戶名(string),是否把用戶名長期保存在coolie中(bool))
為提供的用戶名創(chuàng)建一個身份驗證票證,并將其添加到響應(yīng)的 Cookie 集合或 URL
等等 方法很多,不詳細(xì)列出了。
具體的使用或者深入的挖掘希望各位自己去探索了
當(dāng)然這兩部分都可以單獨(dú)使用,今天先著重后者,至于前者,我下一篇隨筆將會寫到。
ASP.NET 中提供了多種認(rèn)證方式,比如大名鼎鼎的Windows 身份驗證
Windows 身份驗證模式根據(jù) IIS 所提供的憑據(jù)將當(dāng)前 User 屬性值設(shè)置為 WindowsIdentity,但它不修改提供給操作系統(tǒng)的 Windows 標(biāo)識。提供給操作系統(tǒng)的 Windows 標(biāo)識用于進(jìn)行權(quán)限檢查(如 NTFS 文件權(quán)限檢查)或者用于使用集成安全性連接到數(shù)據(jù)庫。默認(rèn)情況下,此 Windows 標(biāo)識是 ASP.NET 進(jìn)程的標(biāo)識。在 Microsoft Windows 2000 和 Windows XP Professional 上,此標(biāo)識是 ASP.NET 輔助進(jìn)程的標(biāo)識,即本地 ASPNET 帳戶。在 Windows Server 2003 上,此標(biāo)識是 ASP.NET 應(yīng)用程序所屬的 IIS 應(yīng)用程序池的標(biāo)識。默認(rèn)情況下,此標(biāo)識是 NETWORK SERVICE 帳戶。
通過啟用模擬功能,可以將 ASP.NET 應(yīng)用程序的 Windows 標(biāo)識配置為 IIS 所提供的 Windows 標(biāo)識。也就是說,指示 ASP.NET 應(yīng)用程序模擬 IIS 為 Windows 操作系統(tǒng)驗證的所有任務(wù)(包括文件和網(wǎng)絡(luò)訪問)提供的標(biāo)識。(解釋來自MSDN Library)
還有一種常有的認(rèn)證即是 Forms 身份驗證
Forms 身份驗證使不要求 Windows 身份驗證的 Web 應(yīng)用程序可以進(jìn)行用戶和密碼驗證。使用 Forms 身份驗證時,用戶信息存儲在外部數(shù)據(jù)源中,例如Member 數(shù)據(jù)庫,或存儲在應(yīng)用程序的配置文件中。在用戶通過身份驗證后,F(xiàn)orms 身份驗證即會在 Cookie 或 URL 中維護(hù)一個身份驗證票證,這樣已通過身份驗證的用戶就無需在每次請求時都提供憑據(jù)了。
這樣一來就方便也安全了,那具體怎么完成Forms身份認(rèn)證的設(shè)置呢?
首先打開配置文件web.config
找到<system.web>節(jié)點(diǎn)下的 <authentication> 和 <authorization>節(jié)點(diǎn)加入
<system.web>
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<authentication>節(jié)點(diǎn)是設(shè)置認(rèn)證方式,這里我們制定 Forms
<forms>節(jié)點(diǎn)內(nèi)的屬性可以制定 認(rèn)證頁面(登錄頁面)、默認(rèn)頁面、是否使用cookie、認(rèn)證超時時間等等。
這里我們只指定認(rèn)證頁面 loginUrl="login.aspx"
<authorization> 節(jié)點(diǎn)是認(rèn)證節(jié)點(diǎn)
<deny> 是否認(rèn)節(jié)點(diǎn) 指定屬性 users="?"即為未經(jīng)過認(rèn)證的人都需要去認(rèn)證頁面進(jìn)行認(rèn)證
與之對應(yīng)的是<allow>允許節(jié)點(diǎn)
這樣一來思路就清晰了,無論用戶訪問什么頁面服務(wù)器會判斷用戶是否通過認(rèn)證,如果沒有轉(zhuǎn)到認(rèn)證頁面。
下一步將要確定在login.aspx.cs文件中如何完成我們認(rèn)證工作了
public void Login_OnClick(object sender, EventArgs args)
{
if (BLL.CheckLogin(this.Txbusername.Text,this.Txbuserpwd.Text ))
FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text,NotPublicCheckBox.Checked);
else
Msg.Text = "Login failed. Please check your user name and password and try again.";
}
這里的CheckLogin(用戶名,密碼) 方法是在邏輯層使用的驗證用戶是否合法的方法
當(dāng)然如果用 Membership類繼承的一些驗證方法會更簡單,但是在此不詳細(xì)說明了。
FormsAuthentication 類(終于提到主人公了),它所屬的命名空間為 System.Web.Security;
FormsAuthentication 是用來設(shè)置認(rèn)證的類,如果用戶合法,把用戶名保存在cookie中,之后用戶再次訪問或訪問其他頁面都無需再次認(rèn)證
它內(nèi)部的常用方法有
RedirectFromLoginPage(用戶名(string),是否把用戶名長期保存在coolie中(bool))
將經(jīng)過身份驗證的用戶重定向回最初請求的 URL 或默認(rèn) URL
SetAuthCookie(用戶名(string),是否把用戶名長期保存在coolie中(bool))
為提供的用戶名創(chuàng)建一個身份驗證票證,并將其添加到響應(yīng)的 Cookie 集合或 URL
等等 方法很多,不詳細(xì)列出了。
具體的使用或者深入的挖掘希望各位自己去探索了
您可能感興趣的文章:
- ASP.NET 2.0 中的創(chuàng)建母版頁
- ASP.NET下母版頁和內(nèi)容頁中的事件發(fā)生順序整理
- asp.net使用母版頁中使用ajax腳本取數(shù)據(jù)
- ASP.Net巧用窗體母版頁實(shí)例
- ASP.NET中母版頁和shtml實(shí)例入門
- ASP.NET母版頁基礎(chǔ)知識介紹
- asp.net母版頁如何使用
- 在ASP.NET 2.0中操作數(shù)據(jù)之一:創(chuàng)建一個數(shù)據(jù)訪問層
- 在ASP.NET 2.0中操作數(shù)據(jù)之二:創(chuàng)建一個業(yè)務(wù)邏輯層
- 在ASP.NET 2.0中操作數(shù)據(jù)之三:創(chuàng)建母版頁和站點(diǎn)導(dǎo)航
相關(guān)文章
理解HttpHandler,并為所有*.jpg圖片生成一段文字于圖片上
HttpHandler就是最終相應(yīng)HTTP請求,生成HTTP響應(yīng)的處理器,他們的實(shí)例由asp.net運(yùn)行時創(chuàng)建,,并生存在asp.net的運(yùn)行時環(huán)境中,如果asp.net運(yùn)行時是處理請求的工廠,HttpHandler是處理請求的工人2012-03-03
使用jQuery Uploader顯示文件上傳進(jìn)度
在上傳大文件的時候, 我們都希望可以向用戶顯示上傳的進(jìn)度, 那么這里介紹的就是使用 jQuery Uploader 來實(shí)現(xiàn)這樣的效果2011-12-12
asp.net 圖標(biāo)提取以及圖標(biāo)轉(zhuǎn)換的實(shí)例代碼
asp.net 圖標(biāo)提取以及圖標(biāo)轉(zhuǎn)換的實(shí)例代碼,需要的朋友可以參考一下2013-06-06
asp.net實(shí)現(xiàn)中英文多域名檢測的方法
這篇文章主要介紹了asp.net實(shí)現(xiàn)中英文多域名檢測的方法,涉及asp.net針對URL中域名的解析及字符串操作相關(guān)技巧,需要的朋友可以參考下2016-08-08
asp.net 動態(tài)表單之?dāng)?shù)據(jù)分頁
我們很常會在項目中提到一個動態(tài)表單的概念,比如學(xué)校里面學(xué)生的考試成績,當(dāng)學(xué)生登錄系統(tǒng)的時候,他當(dāng)然是希望看到他自己所有科目的成績;又或者是班主任,他需要看到本班同學(xué)所有科目的成績;這些時候我們一般都會在頁面中呈現(xiàn)如下的效果。2010-03-03
ASP.NET性能優(yōu)化小結(jié)(ASP.NET&C#)
ASP.NET性能優(yōu)化,提高頁面的執(zhí)行效率與下載速度,等很多需要考慮的細(xì)節(jié),編程人員值得參考下。2011-01-01
ASP.NET Core部署前期準(zhǔn)備 使用Hyper-V安裝Ubuntu Server 16.10
這篇文章主要為大家詳細(xì)介紹了ASP.NET Core部署的前期準(zhǔn)備,使用Hyper-V安裝Ubuntu Server 16.10,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04
C#后臺調(diào)用前臺javascript的五種方法小結(jié)
于項目需要,用到其他項目組用VC開發(fā)的組件,在web后臺代碼無法訪問這個組件,所以只好通過后臺調(diào)用前臺的javascript,從而操作這個組件。2010-12-12
VS2015+Qt5+OpenCV3開發(fā)環(huán)境配置
這篇文章主要為大家詳細(xì)介紹了VS2015+Qt5+OpenCV3開發(fā)環(huán)境配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06

