【发布时间】:2013-07-03 18:21:03
【问题描述】:
我们有一个 ASP.NET MVC 4 Intranet 应用程序。我们正在使用 Windows 身份验证,这方面工作正常。使用了用户的凭据,我们可以从 Web 应用程序访问这些凭据。
然而,我们真正想要的是某种混合模式。我们想从浏览器中获取用户的凭据,但我们也想验证用户是否在我们应用程序的数据库中。如果用户在数据库中,那么他们可以继续。如果不是,我们希望将它们重定向到要求备用凭据的页面。我现在要做的是,在Global.asax.cs 中,我有一个Application_AuthenticateRequest 方法,我正在检查用户是否经过身份验证。如果他们是并且他们的 cookie 信息不能反映他们已登录系统的事实,那么我将他们登录并设置一些包含用户信息的 cookie。如果他们没有通过身份验证,我会将他们重定向到登录页面。由于公司政策涉及的原因,我们不能使用 AD 角色,因此我们需要使用数据库进行额外的身份验证。
我猜Application_AuthenticateRequest 不是这样做的地方,但也许是。但是我们基本上需要一个地方来过滤身份验证请求。但此外,这个实现还引出了另一个问题:
我们的应用中有某些 URL 允许匿名访问。我已经为这些添加了<location> 标签到 web.config。问题是,当对这些进行匿名调用时,它会到达Application_AuthenticateRequest 并尝试将用户登录到数据库中。现在,我可以在Application_AuthenticateRequest 中添加代码来处理这些 URL,这是我目前的计划,但是如果我正在写,而Application_AuthenticateRequest 不是这样做的地方,那么我宁愿现在弄清楚而不是稍后。
【问题讨论】:
标签: asp.net-mvc iis windows-authentication form-authentication