3

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

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

4

1 回答 1

2

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

  1. 对受保护区域使用 Forms 身份验证,而不是 Windows 身份验证。
  2. 为允许访问该区域的某些用户创建一个角色并相应地分配它。
  3. 创建一个新的自定义授权属性,将未经身份验证的用户发送到登录页面。在这种情况下,我需要这样做,因为应用程序将登录页面定义为 IP 检查器(而不是正确的登录页面),因此使用正常的授权属性会导致请求无限循环。该过程类似于此处描述的解决方案,除了我使用普通RedirectResult而不是RedirectToRouteResult登录页面仍然在 WebForms 而不是 MVC 中。
  4. (可选)因为我使用的是 MVC 区域,所以我什至可以创建一个具有自定义授权属性的基本控制器并从中派生所有其他控制器。这使我不必在每个控制器中为每个方法添加前缀(并且无疑会阻止我在某处忘记这样做!)。

不过,我仍然对其他解决方案持开放态度!

于 2010-09-14T11:50:06.310 回答