实现关于跨二级域名和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>

转载于:https://www.cnblogs.com/ziyang/archive/2006/03/02/341359.html

猜你喜欢

转载自blog.csdn.net/weixin_34284188/article/details/93161276