我正在测试一个在MVC4中开发并在IIS上部署的网站,其中启用了 Windows身份验证和匿名身份验证。
我已经测试并确认 Fiddler ,如果控制器标有授权属性,那么在我的情况下控制器会被调用两次。
代码段 -
[Authorize(Roles = @"BUILTIN\Administrators,SomeAdmins,OtherGroup")]
public class AdminController : Controller
{
// Some code here
}
如果我只是没有授权属性,那么控制器会被调用一次。我不知道为什么这种奇怪的行为。
你能帮助我理解原因吗?
答案 0 :(得分:1)
我认为这是正常的,因为Windows Authorization
是基于挑战的协议。首先,您将获得401 (Unauthorized)
代码,浏览器将发送相应的凭据。但是,我认为在映射路由并调用控制器操作之前,浏览器和IIS Sever
之间会发生这种情况。
可以找到更多信息here。