实现关于跨二级域名和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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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,谁才是开发者新宠?