
本文共 2158 字,大约阅读时间需要 7 分钟。
背景:最近新接手一个web项目,需要部署到多台机器上做负载均衡。正好想把原来的有几个项目也加入进去,就又申请了一台服务器,先用两台服务器做负载均衡的测试。
因为公司的web项目都是用dotnet开发,用户登录验证使用的都是form验证写cookie的方式,因为cookie是保存在客户端,所以认为加入负载均衡应该很轻松。
事与愿违。加入负载均衡后,所有站点均登录失败(注:是在测试机上先做的测试)。很是奇怪。然后写日志跟踪。发现在一台服务器上写的cookie在另一台服务器上识别不了。
可以确定的是cookie肯定不会有这个问题,那么问题只能出现在form验证机制上。
查了一些资料和请教了小伙伴们,发现是因为两台服务器上的系统配置和补丁不一致,form验证对系统配置和补丁都有严格要求,必须一致,并且IE11貌似还不支持。
有一些解决办法,但是太复杂,另外form验证有较大的局限性,所以打算弃之不用,用户信息加密那块自己写了个小加密程序处理。
此外,持着开贴要负责的态度,把解决办法贴到下面,希望能给有需要的童鞋提供点帮助。
这里所说的form验证指<authentication mode="Forms">的登录验证方式。
解决方案:
一 打补丁
根据操作系统选择相应的补丁。
二 修改machine.config中的machinekey
1、32位操作系统:
打开C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config
<machineKeyvalidationKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"decryptionKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"validation="3DES"decryption="Auto"/>
修改machineKey中的 decryption="Auto"为 decryption="3DES"
如下:
<machineKeyvalidationKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"decryptionKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"validation="3DES"decryption="3DES "/>
2、64位操作系统:
打开C:\WINDOWS\microsoft.net\Framework64\v2.0.50727\CONFIG\machine.config
<machineKeyvalidationKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"decryptionKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"validation="3DES"decryption="Auto"/>
修改machineKey中的 decryption="Auto"为 decryption="3DES"
如下:
<machineKeyvalidationKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"decryptionKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"validation="3DES"decryption="3DES "/>
三 打完补丁后pcpopclub依然无法获取或解密
1、 就要查framework的补丁是否打多了。如下图红框中的补丁必须有,而且.netframework 4 Extended下只能有一个对应的补丁(KB2416472)。.net framework 4 Extended的其它多余补丁需要卸载。
2、检查web.config下的配置是否正确(如下)(第二步中的machineKey修改可以在对应项目 中的web.config中加入,而不用修改系统下的文件。)
<system.web>
<authenticationmode="Forms">
<formsname="pcpopclub"path="/" loginUrl=" "protection="Encryption"timeout="30"enableCrossAppRedirects="true"/>
</authentication>
<machineKeyvalidationKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"decryptionKey="F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B"validation="3DES"decryption="3DES"/>
四 framework高版本会有影响,无法解密。
转载地址:https://blog.csdn.net/dengmao203/article/details/29798479 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关于作者
