我有一个C#.NET v3.5 Web应用程序,我在web.config中有这个:
<authentication mode="Windows">
</authentication>
<authorization>
<allow users="*"/>
</authorization>
没有问题,整个网站都是公开的。 如果我更改模式表单而不执行任何其他操作:
<authentication mode="Forms">
</authentication>
<authorization>
<allow users="*"/>
</authorization>
网站中的所有网页都被重定向到&#34; login.aspx&#34;哪个不存在!我认为这是默认设置,但如果我没有定义表单并允许所有用户,为什么要重定向?我正在努力实现子目录的表单安全性,但由于这种奇怪的行为,我无法做到这一点。没有其他web.config文件。
任何帮助表示赞赏!谢谢!
更新: 问题是管理员已经通过IIS管理器设置了Windows身份验证,我没有意识到这一点。一旦删除并在IIS管理器中启用了表单身份验证,表单auth就会按预期在web.config中运行。谢谢你的期待。
答案 0 :(得分:0)
声明:
<allow users="*"/>
告诉ASP.NET允许所有已知用户。在Windows身份验证中,表示您的网站运行的默认用户(IIS_USER,NetworkService等)。如果您在Intranet上,那将是您的网络登录。
当您切换到表单身份验证时,所有用户都是未知的,需要进行标识(因此需要重定向)。您可以使用“?”在Forms身份验证中避免这种情况标记而不是“*”
<allow users="?"/>
这将允许所有用户进入网站,识别与否。