2008-09-29 63 views
4

是否可以創建一個與下面的代碼等價的.NET?.NET中的HTTP身份驗證

<?php 
if (!isset($_SERVER['PHP_AUTH_USER'])) { 
    header('WWW-Authenticate: Basic realm="My Realm"'); 
    header('HTTP/1.0 401 Unauthorized'); 
    echo 'Text to send if user hits Cancel button'; 
    exit; 
} else { 
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; 
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>"; 
} 
?> 

我想能夠在web.config中定義一個靜態用戶/密碼。這在PHP中很容易實現,沒有任何解釋如何在MSDN中執行此操作。


我要的是這樣的:

http://lebutch.org/HTTP-auth.png http://lebutch.org/HTTP-auth.png

+0

我想補充一點,OP不在尋找Forms Authentication。 – leppie 2008-09-29 16:12:03

+0

這非常以Apache爲中心,這就是爲什麼大多數.net用戶不知道這個代碼來自哪裏以及它(確切地)做了什麼。您可能需要重新組合短語,例如你需要Basic-Auth(首先檢查IIS是否支持它,等等)。 – Till 2008-09-29 16:13:13

回答

0

是的,你可以指定在web.config憑據。 ASP.NET也有一個內置的成員資格系統,並具有像Login一樣的控件來處理它 - 儘管這與在web.config中設置靜態證書不同。

我認爲最簡單的方法來做你說的是保護IIS中的目錄。

0

我通常做我自己的身份驗證是asp.net對我自己的用戶名和密碼在數據庫中。對於我這樣做的方式,我在頁面上創建了一個用戶名和密碼對話框,並有一個登錄按鈕。在回傳我做這樣的事情:

if(SecurityHelper.LoginUser(txtUsername.Text, txtPassword.Text)) 
{ 
    FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true); 
} 

考慮到這一點,所有你需要做的是一樣的,覈對whatveer你想要的用戶名和密碼,如果你想購買我wouldnt推薦它,你甚至可以硬編碼做。 \如果它的有效使用formsauthentication類的靜態方法。

0

恐怕我無法幫到你。除了在IIS中使用不同的安全設置(例如集成安全性(Windows安全性))之外,我不知道如何獲得類似的對話框。如果這是你想要的,那麼你需要進入IIS和禁用匿名訪問,使另一種認證類型,如集成,基本,,並在代碼中,你可以驗證他們通過檢查登錄:

System.Security.Principal.WindowsIdentity.GetCurrent().IsAuthenticated 

雖然IIS在這種情況下負責驗證。除此之外,我無法幫助你。

如果你需要它,一個鏈接到Windows驗證在asp.net:http://msdn.microsoft.com/en-us/library/ms998358.aspx

2

您需要在ASP.NET中實現基本身份驗證,而不是像上面的響應者所說的那樣使用表單身份驗證。一個很好的例子can be found here