Forms Auth - 为什么如果我允许所有用户,我仍然会被重定向到默认的login.aspx?

时间:2014-04-18 15:43:51

标签: c# .net forms forms-authentication

我有一个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中运行。谢谢你的期待。

1 个答案:

答案 0 :(得分:0)

声明:

<allow users="*"/>

告诉ASP.NET允许所有已知用户。在Windows身份验证中,表示您的网站运行的默认用户(IIS_USER,NetworkService等)。如果您在Intranet上,那将是您的网络登录。

当您切换到表单身份验证时,所有用户都是未知的,需要进行标识(因此需要重定向)。您可以使用“?”在Forms身份验证中避免这种情况标记而不是“*”

<allow users="?"/>

这将允许所有用户进入网站,识别与否。