如何在Web應用程式中實現自定義身份驗證對話方塊

2021-05-23 08:46:17 字數 2454 閱讀 5396

這個標題可能並不太準確,我這樣來描述一下我們的意圖吧:

我們知道在web應用程式中有幾種主要的身份驗證方式,典型的就是windows驗證和forms驗證。如果設定為windows驗證的話,那麼既可以自動使用使用者當前身份登入(如果在乙個可信任的環境中),也可以彈出乙個對話方塊要求使用者輸入使用者名稱和密碼。

再來forms驗證,顧名思義,它是有乙個表單來進行驗證的,在web.config中,我們通常需要指定乙個loginurl。這樣使用者如果沒有得到授權,則需要轉到這個頁面輸入使用者名稱和密碼。

但是,也有的朋友跟我提到,如果我們使用forms驗證,能不能也彈出乙個對話方塊讓使用者輸入使用者名稱和密碼呢?這的確是乙個不錯的問題。

可惜的是,forms驗證無法提供這樣的功能,但我們確實可以通過自定義驗證來實現

using system;

using system.text;

using system.web;

using system.security.principal;

namespace dataserviceauthenticationmodule

/"";

const

string authserverheader = "www-authenticate";

const

string authclientheader = "authorization";

const

string basicauth = "basic";

#region ihttpmodule 成員

那麼,在後面到底發生了什麼呢?是怎麼彈出這個對話方塊的呢?

這個對話方塊其實是瀏覽器彈出來的。瀏覽器收到了乙個response,內容為unauthorized,所以它知道伺服器端需要進行驗證,所以它彈出了這個對話方塊。為了說明這一點,我們可以來看一下其他的瀏覽器彈出的對話方塊。下面這個是google chrome瀏覽器彈出的

下面這個是mozilla firefox瀏覽器彈出的

那麼,接下來我們看看,我們輸入的使用者名稱和密碼是怎麼傳送給伺服器的呢

我們看到了這樣一串文字:

y2hlbnhpemhhbmc6cgfzc3dvcmq=

這裡就是包含了我們輸入的使用者名稱和密碼。注意,它並沒有被加密。我們可以通過下面的幾行**很容易地將其還原為明文的字串

這是用冒號隔開的字串。

如何在C 中編寫多執行緒應用程式

以前在使用vb來實現多執行緒的時候,發現有一定的難度。雖然也有這樣那樣的方法,但都不盡人意,但在c 中,要編寫多執行緒應用程式卻相當的簡單。這篇文章將作簡要的介紹,以起到拋磚引玉的作用!net將關於多執行緒的功能定義在system.threading名字空間中。因此,要使用多執行緒,必須先宣告引用此...

web 應用元件 應用程式

1,web 內容都是儲存在 web 伺服器上的。2,web 伺服器所使用的是 http 協議,因此經常會被稱為 http 伺服器。3,http 伺服器儲存了網際網路中的資料,如果http 客戶端發出請求的話,它們會提供資料 4,http 客戶端和 http 伺服器共同構成了全球資訊網的基本元件 5,...

Web應用程式基礎

一般的web應用程式,是由客戶端 client 與伺服器 server 兩個部分組成的的。客戶端可以是移動端 桌面應用程式 瀏覽器 browser 服務端則是http伺服器,客戶端會請求伺服器上放置的檔案或者資源。對於瀏覽器 browser 來說,請求的伺服器資源就是html檔案。什麼是 html?...