通过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,它定义web.config中密码的格式.从 MSDN documentation for .NET 3.5开始,认格式为SHA1.

如果您在web.config中使用明文用户名和密码,则应该使用:

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

事件虽然这是一个内部应用程序,我仍然建议至少哈希密码,而不是将其留在明文.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些