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è)置呢?
首先打開(kāi)配置文件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)文章
將文件上傳、下載(以二進(jìn)制流保存到數(shù)據(jù)庫(kù))實(shí)現(xiàn)代碼
將文件以二進(jìn)制流的格式寫入數(shù)據(jù)庫(kù):首先獲得文件路徑,然后將文件以二進(jìn)制讀出保存在一個(gè)二進(jìn)制數(shù)組中具體請(qǐng)祥看本文,希望對(duì)你有所幫助2013-05-05.NET?Core實(shí)現(xiàn)企業(yè)微信消息推送
這篇文章介紹了.NET?Core實(shí)現(xiàn)企業(yè)微信消息推送的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06asp.net core集成kindeditor實(shí)現(xiàn)圖片上傳功能
這篇文章主要為大家詳細(xì)介紹了asp.net core集成kindeditor實(shí)現(xiàn)圖片上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11ASP.NET 導(dǎo)出到Excel時(shí)保留換行的代碼
由于Excel畢竟不是 HTML,它有自己的樣式標(biāo)準(zhǔn),在Excel 中,實(shí)現(xiàn)換行的方法是2008-12-12ASP.NET 獲取存儲(chǔ)過(guò)程返回值的實(shí)現(xiàn)代碼
ASP.NET 獲取存儲(chǔ)過(guò)程返回值的實(shí)現(xiàn)代碼,需要的朋友可以參考下。2011-12-12[Asp.Net Core]提高開(kāi)發(fā)效率的方法
這篇文章主要介紹了[Asp.Net Core]提高開(kāi)發(fā)效率的方法,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07ASP.NET MVC中jQuery與angularjs混合應(yīng)用傳參并綁定數(shù)據(jù)
這篇文章主要介紹了ASP.NET MVC中jQuery與angularjs混合應(yīng)用傳參并綁定數(shù)據(jù),需要的朋友可以參考下2017-06-06ASP.NET FileUpload 上傳圖片實(shí)例
Add a FileUpload control to the aspx page2009-09-09