.NET中的HTTP身份验证

时间:2020-03-06 14:52:55  来源:igfitidea点击:

是否可以创建与以下代码等效的.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中如何做到这一点。

我想要的是这样的:

http://lebutch.org/HTTP-auth.png http://lebutch.org/HTTP-auth.png

解决方案

是的,我们可以添加到web.config并使用表单身份验证。我不知道php,所以我无法帮我们解决其余的问题

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

是的,我们可以在web.config中指定凭据。 ASP.NET还具有内置的成员资格系统,并具有诸如Login之类的控件可与之一起使用,尽管这与在web.config中设置静态凭据不同。

我认为执行我们正在讨论的最简单的方法是保护IIS中的目录。

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

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

请记住,我们需要做的是相同的,对照我们想要的内容检查用户名和密码,如果我们想购买甚至可以硬编码,我不建议这样做。 \如果有效,请使用formsauthentication类的静态方法。

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

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

尽管在这种情况下IIS负责验证。除此之外,我无法。

如果需要它,请访问asp.net中Windows身份验证的链接:http://msdn.microsoft.com/zh-cn/library/ms998358.aspx

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

我仍然建议我们阅读ASP.NET表单身份验证教程。

我们需要在ASP.NET中实现基本身份验证,而不是像上面的响应者所说的那样进行身份验证。一个很好的例子可以在这里找到。