程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> ASP.NET 2.0 中Forms安全認證

ASP.NET 2.0 中Forms安全認證

編輯:ASP.NET基礎
即:使用 Membership 類 + FormsAuthentication 一起使用以創建的用戶管理與認證的系統。
當然這兩部分都可以單獨使用,今天先著重後者,至於前者,我下一篇隨筆將會寫到。

ASP.NET 中提供了多種認證方式,比如大名鼎鼎的Windows 身份驗證
Windows 身份驗證模式根據 IIS 所提供的憑據將當前 User 屬性值設置為 WindowsIdentity,但它不修改提供給操作系統的 Windows 標識。提供給操作系統的 Windows 標識用於進行權限檢查(如 NTFS 文件權限檢查)或者用於使用集成安全性連接到數據庫。默認情況下,此 Windows 標識是 ASP.NET 進程的標識。在 Microsoft Windows 2000 和 Windows XP Professional 上,此標識是 ASP.NET 輔助進程的標識,即本地 ASPNET 帳戶。在 Windows Server 2003 上,此標識是 ASP.NET 應用程序所屬的 IIS 應用程序池的標識。默認情況下,此標識是 NETWORK SERVICE 帳戶。
通過啟用模擬功能,可以將 ASP.NET 應用程序的 Windows 標識配置為 IIS 所提供的 Windows 標識。也就是說,指示 ASP.NET 應用程序模擬 IIS 為 Windows 操作系統驗證的所有任務(包括文件和網絡訪問)提供的標識。(解釋來自MSDN Library)

還有一種常有的認證即是 Forms 身份驗證
Forms 身份驗證使不要求 Windows 身份驗證的 Web 應用程序可以進行用戶和密碼驗證。使用 Forms 身份驗證時,用戶信息存儲在外部數據源中,例如Member 數據庫,或存儲在應用程序的配置文件中。在用戶通過身份驗證後,Forms 身份驗證即會在 Cookie 或 URL 中維護一個身份驗證票證,這樣已通過身份驗證的用戶就無需在每次請求時都提供憑據了。

這樣一來就方便也安全了,那具體怎麼完成Forms身份認證的設置呢?

首先打開配置文件web.config
找到<system.web>節點下的 <authentication> 和 <authorization>節點加入
<system.web>
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<authentication>節點是設置認證方式,這裡我們制定 Forms
<forms>節點內的屬性可以制定 認證頁面(登錄頁面)、默認頁面、是否使用cookie、認證超時時間等等。
這裡我們只指定認證頁面 loginUrl="login.aspx"
<authorization> 節點是認證節點
<deny> 是否認節點 指定屬性 users="?"即為未經過認證的人都需要去認證頁面進行認證
與之對應的是<allow>允許節點

這樣一來思路就清晰了,無論用戶訪問什麼頁面服務器會判斷用戶是否通過認證,如果沒有轉到認證頁面。

下一步將要確定在login.aspx.cs文件中如何完成我們認證工作了
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(用戶名,密碼) 方法是在邏輯層使用的驗證用戶是否合法的方法
當然如果用 Membership類繼承的一些驗證方法會更簡單,但是在此不詳細說明了。

FormsAuthentication 類(終於提到主人公了),它所屬的命名空間為 System.Web.Security;
FormsAuthentication 是用來設置認證的類,如果用戶合法,把用戶名保存在cookie中,之後用戶再次訪問或訪問其他頁面都無需再次認證
它內部的常用方法有
RedirectFromLoginPage(用戶名(string),是否把用戶名長期保存在coolie中(bool))
將經過身份驗證的用戶重定向回最初請求的 URL 或默認 URL

SetAuthCookie(用戶名(string),是否把用戶名長期保存在coolie中(bool))
為提供的用戶名創建一個身份驗證票證,並將其添加到響應的 Cookie 集合或 URL
等等 方法很多,不詳細列出了。

具體的使用或者深入的挖掘希望各位自己去探索了
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved