ASP.NET表单授权
我正在使用纯HTML和CSS构建的网站,我需要一种方法来限制对网站特定目录内页面的访问。我想出的解决方案当然是ASP.NET表单授权。我创建了默认的Visual Studio登录表单,并使用Visual Studio的向导设置了用户,角色和访问限制。问题是,我无法使用设置的凭据登录网站。
我正在使用IIS 7.
解决方案
回答
我们什么时候插入了登录名/密码?我们是否查看了在哪里创建的表?尽管密码必须加密,但是值得检查一下用户是否真正被创建。
回答
At what point did you insert your login/password? Did you have a look at the tables that where created? Althought your password must be encrypted, maybe it's worth just checking if your user was actually created.
表单身份验证不需要任何形式的用户数据库。
史蒂夫,能否请我们将表单身份验证web.config部分以及所有相关代码粘贴到我们正在使用的ASP.NET登录控件中。
没有足够的信息来解决这里的问题:)
回答
据我所知,web.config部分几乎没有用:
<authentication mode="Forms" />
我查看了IIS 7,在"身份验证"部分中说:匿名身份验证=启用,ASP.NET模拟=禁用,基本身份验证=禁用,表单身份验证=禁用。
另外,除了将Login对象拖到设计器上并将其指向的页面更改为index.html之外,我没有对代码进行任何更改。
当前,通过显示登录失败文本来使登录失败。
编辑:较早时,当我尝试直接导航到受限制的页面时,我会收到一个蓝页,说我没有足够的权限。现在,即使我拒绝了匿名访问,也可以看到没有登录即受到限制的页面。
回答
我猜(因为我没有IIS7便捷的ATM),我们需要关闭Anonomyous Auth,并在IIS7部分中启用Forms Auth。
回答
史蒂夫
我认为问题不在于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中相比,有更好的方法来实现表单身份验证,但这应该可以入门。