通过web.config进行身份验证,不在ASP.net 3.5中进行身份验证

Kev*_*son 12 asp.net authentication authorization forms-authentication web-config

这是应该非常简单的事情之一,我无法弄清楚为什么它不起作用.

我正在尝试为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>
Run Code Online (Sandbox Code Playgroud)

并且,在登录页面中,代码如下所示:

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

if (FormsAuthentication.Authenticate(username, password))
    FormsAuthentication.RedirectFromLoginPage(username, false);
Run Code Online (Sandbox Code Playgroud)

但是,FormsAuthentication.Authenticate(用户名,密码)始终返回false.我无法弄清楚原因.

我甚至尝试使用Membership.ValidateUser但只是在本地数据库中添加到App_Data文件夹.

有什么东西真的很基本我忘了这里或者这在.net 3.5中根本不起作用吗?

dar*_*iom 13

我不确定这是否在.NET 3.5中发生了变化,但该<credentials>元素有一个属性passwordFormat,用于定义密码的格式web.config.从.NET 3.5MSDN文档中,默认格式为SHA1.

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

...
<credentials passwordFormat="Clear">
...
Run Code Online (Sandbox Code Playgroud)

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