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

标签 asp.net authentication web-config forms-authentication authorization

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

我正在尝试为 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/

相关文章:

php - 使用 PHP 和 MYSQL 创建登录脚本

msbuild - 允许定义 ='MachineToApplication' msbuild 错误

asp.net - 配置 Visual Studio 2013 以允许 ASPNETCOMPILER 使用 x64 编译器进行预编译

c# - Simple Injector 和默认的 AccountContoller 依赖问题

java - 如何从电子邮件应用程序(不是 Gmail)获取未读邮件

c# - Azure 部署带有纯文本连接字符串的 web.config 文件

asp.net - Web.config maxRequestLength 被忽略,只有 maxAllowedContentLength 有效

jquery - 如何用 html 生成动态弹出窗口?

c# - asp.net 我无法在脚本部分调试 javascript

c# - 如何将错误响应发送回 OAuth2 客户端