【问题标题】:Forms Authentication across Sub-Domains on local IIS本地 IIS 上跨子域的表单身份验证
【发布时间】:2012-01-06 20:38:04
【问题描述】:

我知道一个 cookie 可以使用设置在多个子域之间共享

<forms 
    name=".ASPXAUTH" 
    loginUrl="Login/" 
    protection="Validation" 
    timeout="120" 
    path="/"     
    domain=".mydomain.com"/>

在 Web.config 中。但是如何在本地机器上复制同样的东西。我在笔记本电脑上使用 Windows 7 和 IIS 7。因此,我的实际站点 users.mysite.com 有站点 localhost.users/ localhost.host/ 用于 host.mysite.com 和类似的。

【问题讨论】:

    标签: c# asp.net-mvc forms-authentication subdomain


    【解决方案1】:

    这是对在 Framework 4.5 中运行并尝试与 framework 4 及更低版本共享令牌的任何人的提醒,请注意,这将导致您在任何 4 及更低版本的应用程序上都不会收到 auth cookie。即:如果在您的web.config 中有:

    <httpRuntime maxRequestLength="80480" targetFramework="4.5" />
    

    您可以通过删除targetFramework="4.5" 属性使其工作,但我不知道这样做是否有任何副作用:

    <httpRuntime maxRequestLength="80480" />
    

    【讨论】:

    • 这为我节省了一对使用 .NET 4.5.1 的网站!
    • 我无法对子应用程序进行身份验证。它与 2 个 web.config 文件中的 targetFramework="4.5" 一起使用。谢谢
    【解决方案2】:

    localhost.userslocalhost.host 是跨域的。 Cookie 不能跨域共享。

    您可以像这样配置它,以便子域不同但根域保持不变:

    • users.localhost
    • host.localhost

    现在将 web.config 中的 cookie 域设置为 localhost

    domain=".localhost"
    

    并在您的 c:\Windows\System32\drivers\etc\hosts 文件中添加以下 2 个条目:

    127.0.0.1 users.localhost
    127.0.0.1 host.localhost
    

    现在您将能够在users.localhosthost.localhost 之间成功共享身份验证cookie。

    啊,别忘了在您的自动构建过程中添加一个步骤,该步骤将在生产中交付之前将您的 web.config 值转换为正确的根域。

    【讨论】:

    • 感谢 Darin,当我从 Visual Studio 创建这些网站时,如何在 IIS 中进行设置。
    • @Parminder,IIS 配置问题应该在serverfault.com 讨论。
    • 达林,谢谢,我已经在那里问过这个问题,但是在两个不同的地方问同样的问题是否有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多