实现关于跨二级域名和1.1和2.0版.net Forms身份验证体制的问题和解决办法.

  公司平台是很多2级名系统构成。以前都是vs2003开发的,所以在member.domain.com中登录后,在bbs.domain.com中可以读取登录的状态和用户信息. 
  现在我们打算用vs2005升级部分模块,但是我在做了biz.domain.com后发现读不到member.domain.com登录后的信息了. biz.domain.com和bbs.domain.com中采用的技术和配置是一模一样的.只是开发工具不一样,为什么vs2005开发的就读不出来了? 直接request Forms验证的cookie也不行. 不过request vs2003直接写入的cookie可以读到.
  我的webconfig中:
        <authentication mode="Forms">
          <forms loginUrl="/Member/Account/UserLogin.aspx" timeout="40" name="OperateUser" protection="All" path="/"/>
        </authentication>

      <machineKey
          validationKey= "B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
          decryptionKey= "BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
          validation="SHA1">
      </machineKey>

  所有项目中都一样的.现在关键是直接Request.Cookie["OperateUser"]都为null


  奇怪.我把biz.domain.com的webconfig的Forms的name换成别的。就可以request出member.domain.com的Forms的Cookie.

  但是,将这个cookie解密成Titck时候却失败.提示:Length of the data to decrypt is invalid. .不知道是不是1.1和2.0的Forms不兼容?


  把解决办法提供出来供应大家备查:
  在2.0中新增加了 "decryption" attribute .所以在biz.domain.com的web.config中要新增加这个attribute :
    <machineKey
validationKey= "B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
        decryptionKey= "BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
        decryption="3DES"
        validation="SHA1">
    </machineKey>

 

posted @   子扬's Blog  阅读(2657)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示