Asp.net
通過 web.config 進行身份驗證未在 ASP.net 3.5 中進行身份驗證
這是應該非常簡單的事情之一,我只是無法弄清楚為什麼它不起作用。
我正在嘗試為 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,因此您的明文實際上沒有正確使用。