我有一个MVC 4.5网站,它是为Windows Auth设置的:
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
这似乎允许我正确地将User.Identity.Name显示为“DOMAIN \ username”
这意味着,控制器上的这段代码应该可以工作:
[Authorize(Users = @"DOMAIN\username")]
public class TestController : Controller
{...}
但是,添加此选项后,控制器中的所有页面都会导致IE和Chrome一次又一次地提示登录信息。似乎没有办法“登录”该应用程序!
如果我添加[授权],则不会一遍又一遍地提示。
我可以这样做:
if (user.Identity.Name != @"DOMAIN\username") return NotAuthorized();
在每个方法的开头......但如果Identity设置正确,为什么不能使用它呢?
我有这个问题在Visual Studio下本地运行,以及在iis站点上运行。
PS:在有人将此标记为副本之前,请确保它确实存在 - 我无法找到任何失败的方法。
------更新: 好吧,我想我想出来了......我使用了[授权(角色=“每个人”)]它有效(是的,我们真的有那个角色),所以,我想我会尝试将它设置为无效group,EveryoneX。这导致它提示 - 我想允许您更改为具有访问权限的其他用户。 (我希望它能直接重定向到未经授权的页面。)
所以,我仔细检查过,并且在Users =“OUR_DOMAIN \ username”上有一个拼写错误 - 应该是“OUR-DOMAIN \ username”它现在似乎正常运作。我无法相信我错过了那么久。
感谢所有帮助我找到这个的人。