.NET中的HTTP身份验证
是否可以创建与以下代码等效的.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中实现基本身份验证,而不是像上面的响应者所说的那样进行身份验证。一个很好的例子可以在这里找到。