none
跨域Forms身份验证,获取不到AuthCookie.同一个iis版本可以获取,不同版本的iis获取不到. RRS feed

  • 问题

  • 跨域(跨二级域)Forms身份验证,在IIS版本相同的前提下,可以正常使用,Forms中的AuthCookie都可以获取到。

    但是如果两台电脑IIS版本不一样,比如一个IIS7,部署的域名是a.site.com,一个是IIS6.1,部署的域名是b.site.com。这时候登录a.site.com成功了,那么正常来说访问b.site.com的时候会直接通过的,不会跳转到登录页面。但是这里会跳转到登录页面,调试b.site.com发现在Application_AuthenticateRequest里边,根本获取不到名为AuthCookie的cookie,当然也无法生成FormsAuthenticationTicket了。然后还有更奇怪的事,我拿调试工具看了一下头信息,在a.site.com登录成功以后,请求b.site.com的时候,cookie中竟然有AuthCookie这个cookie(下图)。但是在Application_AuthenticateRequest中却取不到值。

    然后还有更奇怪的,这时候我登录b.site.com,登录成功。然后 我再刷新a.site.com,则a.site.com登录失败(绝对不是超时),原因是获取不到AuthCookie。就相当于后一个网站的cookie会把前一个的覆盖掉,然后前一个也没有办法获取后一个网站生成的authcookie。

    请教这里到底是什么原因导致这个问题的呢  ? 是因为IIS版本不同,导致Forms验证不一样吗 ? 怎么能把Forms验证改成和IIS版本没有关系的呢 ?

    2011年9月6日 2:58

答案

全部回复