Asp.net 表单身份验证是否与Web负载平衡器一起工作?
我正在开发一个使用表单身份验证的web应用程序Asp.net 表单身份验证是否与Web负载平衡器一起工作?,asp.net,cookies,session,Asp.net,Cookies,Session,我正在开发一个使用表单身份验证的web应用程序 <authentication mode="Forms"> <forms slidingExpiration="true" loginUrl="~/User.aspx/LogOn" timeout="15" name="authToken" /> </authentication> 登录时,我在浏览器中看到此cookie
<authentication mode="Forms">
<forms slidingExpiration="true"
loginUrl="~/User.aspx/LogOn"
timeout="15"
name="authToken" />
</authentication>
登录时,我在浏览器中看到此cookie集:
问题是当我把这个网站放在一个负载平衡的模型中时会发生什么?正在哪里设置ASP.net会话cookie?我没有在代码中显式地完成它,所以我假设它发生在ASP.Net的某个幕后
另外,如果会话cookie是由web服务器A设置的,我假设web服务器B不会识别它并将其视为无效会话。如果是这样的话,我可能不想用它,对吧 您必须将两台计算机上的计算机密钥设置为相同,名称设置为相同……如果这样做,您应该不会对forms auth的负载平衡产生问题
<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"/>
您还需要确保您使用的会话状态提供程序可以跨机器工作(即,不是mode=“inproc”
),但除此之外,它工作正常。啊。。。我明白了,所以会话cookie必须类似于加密的时间戳。我假设机器密钥用于加密/解密,这就是为什么它需要相同。如果您是负载平衡,您不能使用mode=“InProc”会话。即使是粘性会话也不行。您需要将其存储在IIS、数据库或创建自己的提供程序中。我已经实现了在IIS中存储会话,它工作得很好。为了解密身份验证令牌,您需要共享验证密钥。因此,要更改为sql server,是否简单到:1)在IIS中从InProc更改为sql server 2)在IIS中设置连接字符串(如果需要,显然要安装DB)