在MVC3应用程序中使用Windows身份验证时,将特定用户帐户重定向到登录页面

问题描述

| 我正在使用.Net MVC3开发应用程序。使用Windows身份验证和Active Directory进行登录,一切正常。这是一个基于Intranet的应用程序。 问题是我们拥有一个部门中多个人使用的登录名。 我希望能够将该帐户重定向登录页面,以便我可以提示输入其他用户名和密码,但似乎找不到通过Windows身份验证实现此目的的方法。如果有,我只是看不到在MVC中进行该操作的位置。 我尝试将表单身份验证与AD结合使用,但我们不希望每个人都必须登录,而只需一个帐户即可。不幸的是,这是我的商业决定! 在这种情况下,也不适合在控制器上使用授权属性,因为所有用户或组均可访问所有控制器。 我所看到的建议似乎围绕内部和外部帐户的Windows和Forms身份验证混合使用,但是在这种情况下,我们所有的帐户都位于AD中。 有什么办法可以做到这一点? 标记     

解决方法

听起来很难,因为如果所有用户和组都可以访问所有区域,那么人们只能使用一个单独的URL,因此您必须覆盖所输入的任何URL。 您可以为该特定用户添加另一个组吗? 当您要将它们重定向到另一个登录页面时,是否表示他们将在其中输入更多AD凭据的页面? 而且,您是说一个部门中的多个人使用他们之间的一个AD帐户登录到多台计算机吗? Cos听起来很糟糕!     ,我建议您使用一个类,以获取使用Windows身份验证登录的用户名,如下所示:
WindowsIdentity identity = HttpContext.Current.Request.LogonUserIdentity;
然后,您可以使用它来检查它是否是每个人都在使用的主用户。如果是这样,请将该用户注销。注销后,将用户重定向到必须使用新登录名的登录页面。您甚至可以发送状态消息。 现在,您可以修改Authorize Attribute类,也可以只编写自己的自定义类,然后在需要登录的每个页面上调用它(这不理想)。