ASP.NET MVC2应用程序中的第二层身份验证

时间:2010-08-27 11:30:37

标签: authentication asp.net-mvc-2 forms-authentication windows-authentication asp.net-mvc-areas

我们有一个ASP.NET应用程序,部分在MVC中(其余部分是基于webforms的遗留CMS)。该应用程序通过表单身份验证进行身份验证,但是从一组特定IP地址访问它的任何用户都会自动分配给“特殊”用户。

我们目前有一个子应用程序,我们希望将其作为一个区域引入(父)MVC应用程序。此应用程序使用Windows身份验证作为第二层身份验证。是否有一种简单的方法可以保留第二层身份验证(可能是第二个授权属性)?请记住,用户可以从内部和外部登录此应用程序。在用于特殊表单身份验证用户的IP地址集之外,它排除了直接表单身份验证。如果这样可以提供更简单的解决方案,我们也不一定与第二层的Windows身份验证相关联。

1 个答案:

答案 0 :(得分:2)

我还没有完全尝试,但是从我所看到的&到目前为止尝试过,我对自己问题的解决方案是:

  1. 对受保护区域使用Forms身份验证,而不是Windows身份验证。
  2. 为允许访问此区域的某些用户创建角色&相应地分配它。
  3. 创建新的自定义授权属性,将未经身份验证的用户发送到登录页面。在这种情况下,我需要这样做,因为应用程序将登录页面定义为IP检查程序(而不是正确的登录页面),因此使用正常的授权属性将导致请求无限循环。该过程类似于描述here的解决方案,除了我使用普通RedirectResult而不是RedirectToRouteResult,因为登录页面仍然在WebForms而不是MVC。
  4. (可选)因为我正在使用MVC区域,所以我甚至可以create a base controller with the custom authorisation attribute & derive all other controllers from it。这使我免于为每个控制器中的每个方法添加前缀(并且毫无疑问会阻止我忘记在某个地方执行此操作!)。
  5. 我仍然愿意接受其他解决方案!