亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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)然這兩部分都可以單獨使用,今天先著重后者,至于前者,我下一篇隨筆將會寫到。

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é)點下的 <authentication> 和 <authorization>節(jié)點加入
<system.web>
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<authentication>節(jié)點是設(shè)置認(rèn)證方式,這里我們制定 Forms
<forms>節(jié)點內(nèi)的屬性可以制定 認(rèn)證頁面(登錄頁面)、默認(rèn)頁面、是否使用cookie、認(rèn)證超時時間等等。
這里我們只指定認(rèn)證頁面 loginUrl="login.aspx"
<authorization> 節(jié)點是認(rèn)證節(jié)點
<deny> 是否認(rèn)節(jié)點 指定屬性 users="?"即為未經(jīng)過認(rèn)證的人都需要去認(rèn)證頁面進(jìn)行認(rèn)證
與之對應(yīng)的是<allow>允許節(jié)點

這樣一來思路就清晰了,無論用戶訪問什么頁面服務(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ì)列出了。

具體的使用或者深入的挖掘希望各位自己去探索了

相關(guān)文章

最新評論