您的位置:首页 > 其它

二级域名共享Cookie时碰到的问题:Padding is invalid and cannot be removed

2008-10-23 16:42 711 查看
最近因为工作的原因,要实现 二级域名的站点跟主站点共享用户登陆身份的功能。

想了想,最简单,各站点改动最少,最省事的莫过于通过设置 Cookie 的 Domain 属性值来实现了。

于是参考了下 Zendy 的相关文章 http://www.cnblogs.com/caomao/archive/2005/07/05/186606.html 后,便开始了。

一切顺利,^_^,汗,因本来就不难,要本地调试通过。于是放到服务器去,天哪,出错:

Padding is invalid and cannot be removed.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed

仔细检查,没少传什么东西呀,本地跟服务器上程序是一致的,怎么本地行,服务器上就不行了呢!奇怪了。

于是 google,baidu 了一番,结果是众说纷云,杂七杂八,有说是权限问题的,有说是设置问题,还有很多是提出问题后,根本没人回答的。

搞了好久,没搞定,后来静下心来一想,这应该是很简单的问题,其它人应该都很顺利搞定的,应该都没出过这个错误。

想呀想,想呀想,终于找出了本地跟服务器上的区别。

真是笨,笨死啦。本地测的程序全是用VS2003写的,而服务器上,因主站是比较早做的,是VS2003写的,而现在要调用的子站是用VS2005写的,

一想到这,就觉得应该是两个版本间 产生的 验证票据的加解密方法所采用的机制不一样。于是进行修改:

string HashTicket = FormsAuthentication.Encrypt(ticket)

把上面这句去掉,同时把读取 Cookie 时的解密的那句也去掉。搞定。

不过去掉后,Cookie 就是明码了,安全方面需考虑下。至于有没有其它解决方法,正在找。。。

^_^,才孰学浅,写的不对之处,还希望有高人能批评指正!谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐