Asp.net

通過 web.config 進行身份驗證未在 ASP.net 3.5 中進行身份驗證

  • December 23, 2011

這是應該非常簡單的事情之一,我只是無法弄清楚為什麼它不起作用。

我正在嘗試為 ASP.net 3.5 應用程序設置一些非常快速的身份驗證,但將使用者名和密碼儲存在 web.config 文件中(我知道它不是很安全,但它是一個內部應用程序,我一直被要求添加和刪除登錄名,因此這是最快的方法)。

因此,相關的配置部分如下所示:

<authentication mode="Forms">
  <forms loginUrl="~/login.aspx">
   <credentials>
    <user name="user" password="password" />
    <user name="user2" password="password2" />
   </credentials>
  </forms>
 </authentication>

 <authorization>
   <deny users="?"/>
 </authorization>

而且,在登錄頁面中,程式碼如下所示:

string username = tbUsername.Text;
string password = tbPassword.Text;

if (FormsAuthentication.Authenticate(username, password))
   FormsAuthentication.RedirectFromLoginPage(username, false);

但是,FormsAuthentication.Authenticate(username, password) 總是返回 false。我不知道為什麼。

我什至嘗試使用 Membership.ValidateUser 但這只是將本地數據庫添加到 App_Data 文件夾中。

我在這裡忘記了一些非常基本的東西還是在.net 3.5中根本不起作用?

我不確定這在 .NET 3.5 中是否發生了變化,但該<credentials>元素有一個屬性passwordFormat,用於定義 .NET 中密碼的格式web.config。在.NET 3.5 的 MSDN 文件中,預設格式為 SHA1。

如果您在 中使用明文使用者名和密碼web.config,則應使用:

...
<credentials passwordFormat="Clear">
...

事件雖然這是一個內部應用程序,但我仍然建議至少對密碼進行雜湊處理,而不是將其保留為明文。

我認為原因是因為您沒有指明密碼格式。 http://msdn.microsoft.com/en-us/library/e01fc50a.aspx

預設為 SHA1,因此您的明文實際上沒有正確使用。

引用自:https://stackoverflow.com/questions/1142847