是否有适合的.NET解决方案,可以在多个域上提供持久的服务器会话?
例如,如果网站用户在www.site1.com下登录,则他们也将在www.site2.com下登录。
安全性是我们正在处理的程序中的一个问题...
谢谢!
是否有适合的.NET解决方案,可以在多个域上提供持久的服务器会话?
例如,如果网站用户在www.site1.com下登录,则他们也将在www.site2.com下登录。
安全性是我们正在处理的程序中的一个问题...
谢谢!
如果您想开始而不是入侵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");
它需要在会话中吗?还是你正在寻找单点登录解决方案?如果是后者,请查看类似ADFS的东西。
http://en.m.wikipedia.org/wiki/Active_Directory_Federation_Services?wasRedirected=true在ASP.NET中,“session”这个词可能会让人有点困惑。
如果您正在谈论安全性(身份验证和授权),那么您可能正在寻找单点登录解决方案。换句话说,当用户登录一个站点时,他们不会被提示登录到另一个相关站点。请查看Windows Identity Foundation、OAuth、Jasig CAS等。CAS是我首选的解决方案(我是.NET客户端的开发人员),但服务器是用Java编写的,您需要一些Java专业知识来配置它。
在ASP.NET中,会话状态是与身份验证和授权完全分离的组件(尽管它可能取决于身份验证步骤的结果)。如果您正在尝试在两个站点之间共享信息(例如购物车内容),则可以将两个域都配置为使用相同的数据库作为会话提供程序(google aspnet_regsql -ssadd),或者只需将数据存储在可由两者访问的数据库中。
有关我强调区别的更多信息,请查看此处:http://www.codeproject.com/KB/aspnet/ASPDOTNETPageLifecycle.aspx
祝你好运。