【问题标题】:HTTP Authentication in .NET.NET 中的 HTTP 身份验证
【发布时间】:2008-09-29 15:54:52
【问题描述】:

是否可以创建与以下代码等效的 .NET?

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
} else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>

我也希望能够在 web.config 中定义静态用户/密码。这在 PHP 中很容易做到,在 MSDN 中没有看到任何解释如何做到这一点。


我想要的是这个:

【问题讨论】:

  • 我想补充一下,OP 不是在寻找表单身份验证。
  • 这是非常以 Apache 为中心的,这就是为什么大多数 .net 人不知道这段代码来自哪里以及它做了什么(确切地说)。您可能想重新措辞,例如你想要 Basic-Auth(首先检查 IIS 是否支持它,等等)。
  • 我错过了这些 cmets。可以有一个更轻松的时间:/

标签: .net http authentication


【解决方案1】:

实现与 PHP 代码相同的最简单方法是直接通过 Reponse.AppendHeader() 发送相同的标头。

我仍然建议您阅读ASP.NET Forms Authentication Tutorial

【讨论】:

  • 也可以使用response.Headers.Add("WWW-Authenticate", "Basic realm=\"Page only available with password\"");
【解决方案2】:

您需要在 ASP.NET 中实现基本身份验证,而不是上述响应者所说的表单身份验证。一个很好的例子can be found here

【讨论】:

    【解决方案3】:

    是的,您可以添加到 web.config 并使用表单身份验证。我不知道 php,所以我无法回答你剩下的问题

    http://msdn.microsoft.com/en-us/library/aa720092(VS.71).aspx\

    【讨论】:

      【解决方案4】:

      是的,您可以在 web.config 中指定凭据。 ASP.NET 也有一个内置的会员系统,并有像 Login 这样的控件来使用它——尽管这与在 web.config 中设置静态凭据不同。

      我认为最简单的方法是保护 IIS 中的目录。

      【讨论】:

        【解决方案5】:

        我通常会在 asp.net 中针对我自己的数据库中的用户名和密码进行身份验证。对于我这样做的方式,我在页面上创建了一个用户名和密码对话框,并有一个登录按钮。在回发期间,我会执行以下操作:

        if(SecurityHelper.LoginUser(txtUsername.Text, txtPassword.Text))
        {
            FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);
        }
        

        记住这一点,您需要做的就是相同,检查用户名和密码是否符合您的要求,如果您想购买,您甚至可以硬编码,我不推荐。 \如果有效,请使用 formsauthentication 类的静态方法。

        【讨论】:

          【解决方案6】:

          恐怕我帮不了你。除了在 IIS 中使用不同的安全设置(例如集成安全性(Windows 安全性))之外,我不知道如何获得这样的对话框。如果这就是你想要的,那么你需要进入 IIS 并禁用匿名访问,启用另一种身份验证类型,例如集成的、基本的,并且在你的代码中,你可以通过检查来验证他们是否已登录:

          System.Security.Principal.WindowsIdentity.GetCurrent().IsAuthenticated
          

          虽然 IIS 在这种情况下负责验证。除此之外,我帮不了你。

          如果您需要,请在 asp.net 中提供指向 Windows 身份验证的链接:http://msdn.microsoft.com/en-us/library/ms998358.aspx

          【讨论】:

            猜你喜欢
            • 2011-08-17
            • 2015-10-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-22
            • 2010-10-17
            • 2011-02-15
            • 1970-01-01
            相关资源
            最近更新 更多