我们需要添加Windows身份验证的MVC2站点,其唯一目的是捕获AD登录名 - 站点本身不需要限制。它上面的所有页面都对我们网络上的所有人开放。
所以在我们的web.config中,我们有这个:
<authentication mode="Windows" />
以及几个location
个节点,可以向所有用户开放网站的各个区域:
<location path="default">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path=".">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="sales/index">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
然而,当我们尝试点击sales/index
时,它会提示登录,即使正确的登录也会产生401:
未授权
HTTP错误401.请求的资源需要用户身份验证。
其他一些细节:
我们没有任何类型的授权操作过滤器,因为正如我所说,整个网站应该对我们网络上的所有人保持开放。
我们将IIS(网站和应用程序池)的配置完全相同,我们可以告诉另一个(MVC3)认证有效的网站。
我们还在两者之间配置相同的文件夹权限。
在这一点上,我们能想到的唯一区别是,破坏的是MVC2站点,而工作站点是MVC3站点。
破坏的MVC2站点将提示用户,而工作的MVC3站点则不会 - 它使用直通身份验证。
损坏的MVC2站点将为有效用户返回相同的响应,包括有效密码或密码无效。
如果输入的用户无效,则损坏的MVC2站点将继续提示输入用户名/密码。