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

