这是一件非常简单的事情,我根本无法解决为什么它不工作.
我试图为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,它定义web.config中密码的格式.从
MSDN documentation for .NET 3.5开始,默认格式为SHA1.
如果您在web.config中使用明文用户名和密码,则应该使用:
... <credentials passwordFormat="Clear"> ...
事件虽然这是一个内部应用程序,我仍然建议至少哈希密码,而不是将其留在明文.