我正在开发一个使用纯 HTML 和 CSS 构建的网站,我需要一种方法来限制对位于网站内特定目录中的页面的访问。我想出的解决方案当然是 ASP.NET Forms Authorization。我创建了默认的 Visual Studio 登录表单,并使用 Visual Studio 的向导设置了用户、角色和访问限制。问题是,我无法使用我设置的凭据登录网站。
我正在使用 IIS 7。
我猜(因为我没有 IIS7 方便的 ATM)您需要关闭 Anonomyous Auth,并在 IIS7 部分中启用 Forms Auth。
您在什么时候输入了您的登录名/密码?您是否查看了在哪里创建的表?尽管您的密码必须加密,但也许值得检查您的用户是否实际创建。
您在什么时候输入了您的登录名/密码?您是否查看了在哪里创建的表?尽管您的密码必须加密,但也许值得检查您的用户是否实际创建。
表单身份验证不需要任何形式的用户数据库。
史蒂夫,您能否将您的表单身份验证 web.config 部分粘贴到您正在使用的 ASP.NET 登录控件的任何相关代码中。
这里还没有足够的信息来解决问题:)
据我所知,web.config 部分毫无用处:
<authentication mode="Forms" />
我查看了 IIS 7,在身份验证部分显示:匿名身份验证 = 启用,ASP.NET 模拟 = 禁用,基本身份验证 = 禁用,表单身份验证 = 禁用。
此外,除了将 Login 对象拖到设计器上并将其指向的页面更改为 index.html 之外,我没有对代码进行任何更改。
目前,通过显示登录失败文本登录失败。
编辑:早些时候,当我尝试直接导航到受限制的页面时,我会收到一个蓝页,说我没有足够的权限。现在,即使我的匿名访问被拒绝,我也可以在不登录的情况下看到被限制的页面。
史蒂夫,
我认为问题不在于您的 IIS 设置。由于表单身份验证不依赖于 IIS 身份验证,因此如果您打算在 ASP.NET 应用程序中使用表单身份验证,则应在 IIS 中为您的应用程序配置匿名访问。
在你的 web.config 中试试这个:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<authentication mode="Forms" >
<forms loginUrl="~/login.aspx" defaultUrl="~/">
<credentials passwordFormat="Clear">
<user name="YourUsername" password="superSecret" />
</credentials>
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<system.web>
</configuration>
有更好的方法来实现表单身份验证,而不是将用户名和密码硬编码到您的 web.config 中,但这应该可以帮助您入门。