这是应该非常简单的事情之一,我无法弄清楚为什么它不起作用。
我正在尝试为 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">
...
尽管这是一个内部应用程序,但我仍然建议至少对密码进行哈希处理,而不是将其保留为明文。
关于asp.net - 通过 web.config 的身份验证不在 ASP.net 3.5 中进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1142847/