是否有适当的.NET解决方案用于在多个域上提供持久性服务器会话?
即。如果该站点的用户登录www.site1.com,他们也将登录www.site2.com
安全性是我们正在制定的计划的一个问题......
谢谢!
答案 0 :(得分:1)
是否需要在会话中,或者您是否正在寻找单点登录解决方案。如果后者看一下ADFS的内容 http://en.m.wikipedia.org/wiki/Active_Directory_Federation_Services?wasRedirected=true
答案 1 :(得分:1)
你可能想从这里开始而不是入侵ASPState数据库(可能,但我不建议):http://www.codeproject.com/KB/session/sharedsession.aspx
基本上,您将AppDomain设置为www.site1.com& www.site2.com使用反射。
您可能也需要AppPath,我们需要,但我们的设置与您的设置略有不同。我们补充说:
FieldInfo appDomainInfo = typeof(HttpRuntime).GetField("_appDomainId", BindingFlags.Instance | BindingFlags.NonPublic);
appDomainInfo.SetValue(theRuntime, "/LM/W3SVC/1/ROOT/A_Website_Name_Here");
答案 2 :(得分:1)
“会话”这个词在ASP.NET中可能有点令人困惑。
如果您正在谈论安全性(身份验证和授权),那么您可能正在寻找单点登录解决方案。换句话说,当用户登录到一个站点时,系统不会提示他们登录到另一个相关站点。看一下Windows Identity Foundation,OAuth,Jasig CAS。 CAS是我首选的解决方案(我是.NET客户端的开发人员),但服务器是用Java编写的,你需要一些Java专业知识才能按照你想要的方式进行配置。
在ASP.NET中,会话状态是与身份验证和授权完全独立的组件(尽管它可能取决于身份验证步骤的结果)。如果您尝试在两个站点之间共享信息(即购物车内容),您可以将两个域配置为使用与会话提供程序相同的数据库(google aspnet_regsql -ssadd),也可以将数据存储在数据库中两者都可以访问。
有关我为什么强调区别的更多信息,请查看:http://www.codeproject.com/KB/aspnet/ASPDOTNETPageLifecycle.aspx
祝你好运。答案 3 :(得分:0)
尝试使用IIS 7.5 Url Rewrite 2模块的规范主机名URL重写功能:Download
(此答案依赖于两个URL都具有同一Web应用程序的hostheader条目)