表单身份验证是否适用于Web负载均衡器?

时间:2010-07-28 21:53:30

标签: asp.net cookies session

我正在使用使用Forms身份验证的Web应用程序。

    <authentication mode="Forms">
        <forms slidingExpiration="true"
         loginUrl="~/User.aspx/LogOn"
         timeout="15"
         name="authToken"  />
    </authentication>

我在登录时看到我的浏览器设置了这个cookie:

alt text

问题是当我将此网站置于负载均衡模型时会发生什么? ASP.net会话cookie在哪里设置?我没有在代码中明确地这样做,所以我认为它发生在ASP.Net的某个幕后。

此外,如果会话cookie由Web服务器A设置,我假设Web服务器B将无法识别它并将其视为无效会话。如果是这种情况,我可能不想使用它,对吧?

1 个答案:

答案 0 :(得分:16)

您必须将机器密钥设置为相同,并且两台机器上的名称相同...如果这样做,您应该没有问题与表单身份验证负载平衡。

        <authentication mode="Forms">
        <forms loginUrl="~/Login/Index" defaultUrl="~/"
                     name=".myportal"
                     protection="All" slidingExpiration="true" timeout="20" path="/"
                     requireSSL="false"></forms>
    </authentication>

    <machineKey validationKey="534766AC57A2A2F6A71E6F0757A6DFF55526F7D30A467A5CDE102D0B50E0B58D613C12E27E7E778D137058E" decryptionKey="7059303602C4B0B3459A20F9CB631" decryption="Auto" validation="SHA1"/>

会话可能会稍微复杂一些。您可以将ASP.Net会话状态存储在数据库中,也可以使用共享会话提供程序使其可用于负载平衡。

以下是关于在数据库中存储会话状态的好文章:http://idunno.org/articles/277.aspx