.net中的form验证与负载均衡
发布日期:2022-02-22 16:04:54 浏览次数:26 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:highchart绘制条形图(bar)时,条形图缺失的问题解决
下一篇:SQL Server 创建表 添加主键 添加列常用SQL语句

发表评论

最新留言

不错!
[***.144.177.141]2023年12月01日 01时26分34秒