在ASP.NET 2.0中使用跨域的会话

我们有一个用户login的Web应用程序。 该应用程序保持会话中的login信息。 问题是相同的应用程序驻留在不同的域,有时域之间有链接 – 一个域有一个链接到另一个。 在这种情况下,点击链接后,用户在另一个域中,并且必须重新login。 我们的用户不喜欢这种情况,所以我们正在寻找一个解决scheme。

我们不愿意使用cookies,因为有时我们的用户从不允许使用cookies的公共电脑login。 我们也考虑将login数据保存在数据库中,但是我们不要这样做,因为我们不希望在每次页面加载时都增加对数据库的访问。

那么有没有办法在几个域之间启用Session? 或者还有另外一个我们没有想到的解决scheme?

注意:我们没有使用Active Directory进行身份validation,而是使用数据库身份validation。

我会使用数据库共享域之间的会话或像传统的ASP,PHP或asp.net不同的技术。

您对每个页面上的数据库命中的关注是有效的,所以我使用一种方法是正常的内存中会话是用来存储每个身份validation票证。 只有在该会话不存在的情况下,服务器端代码才会进入数据库。

有关此方法的更多信息,请参见“增强的Asp.net会话状态”

据我所知,这是不可能的。

有一次,当从“经典”asp迁移到.net时,我们或多或less有同样的问题。 “经典”asp页面不会与新的asp.net页面共享会话。

我们所做的是在两个“域”中“注册”用户的页面。 当用户访问一个页面,页面validation他没有通过validation时,新页面会询问旧页面。

当然,这个方法有一个巨大的安全问题,我们只在迁移期间使用它。 为了使它更可靠,我们检查了页面的引用者。

只是为了帮助你:DB的另一个问题是,想象用户closures浏览器而不打开closures/退出button。 “会话”将在数据库中激活。 当然,你有办法处理它,但会增加复杂性。