FormsAuthentication对URL选择性

时间:2020-03-05 18:59:21  来源:igfitidea点击:

有没有一种方法可以实现表单身份验证,但仅适用于特定的URL。例如,我希望FormsAuthentication可以保护staging.mydomain.com上的站点,但是如果web.config意外地移到了生产站点,则不希望阻止对www.mydomain.com的访问。

解决方案

回答

表单身份验证在网站实例上实现。它不会那样工作。

回答

在web.config中,我们可以管理FormsAuthentication的功能。因此,答案有点像问题,@ Andrew是正确的。

但是,我们也许可以在global.asax中执行某些操作以识别站点正在运行的服务器或者域,并禁用FormsAuthentication。如果域是www.mydomain.com,则可能创建一个有权访问所有内容的用户,并在会话启动时手动为该用户设置FormsAuthenticationTicket。

这有点骇人听闻,我建议我们提出一种带外方法来控制web.config。

回答

这可以实现,但是我们必须为此实现自己的IHttpModule。 las FormsAuthenticationModule是密封的,这意味着我们必须从头开始,但是Reflector可以在此提供很大的帮助。

回答

过去,我们使用了一个简单的解决方法。

我们将默认的"登录"页面设置为可供匿名用户访问的简单页面,我们将其称为checkDomain.aspx

在该页面中,我们对域进行了快速检查,并基于此将用户重定向到登台站点中的login.aspx页面或者生产站点中原始请求的URL。这不是很漂亮,但是当我们担心可能会发生这种情况时,它可以在短时间内快速简便地实现。