我们将几个ASP.NET应用程序部署到几个服务器上。是否存在重用会话数据或其他方法的标准方法,以便在从应用程序移动到应用程序(如果已经过身份验证)时不要求用户登录到下一个应用程序?我希望有一种最好的做法,你们知道这样做。我觉得我应该有一些容易的东西。
感谢。
编辑:为了更清楚,我想传递的会话中的主要信息是经过身份验证的用户ID,但也可能是其他一些会话变量。
答案 0 :(得分:3)
您可以为您的应用实施单点登录策略。
http://aspalliance.com/1545_Understanding_Single_SignOn_in_ASPNET_20.all
http://johndyer.name/post/2005/12/Single-SignOn-with-ASPNET-Membership-and-WebServices.aspx
答案 1 :(得分:1)
答案 2 :(得分:1)
对于会话,请检查:http://www.codeproject.com/KB/aspnet/Sharing_session_state.aspx
对此进行补充,以便共享cookie:http://mgrzyb.blogspot.com/2007/12/aspnet-and-subdomains.html
答案 3 :(得分:0)
您不清楚是否只关注登录,或者您是否真的需要在应用程序之间共享会话数据。
假设后者,您可以尝试这样的事情:
首先,确保所有应用程序都在同一个域中运行。如果不是,所有的赌注都会被取消。我不知道是否有一种简单的方法来配置会话cookie的域属性,所以你可能必须自己做,通过将cookie域属性设置为域:
Response.Cookies [“ASP.NET_SessionId”]。Domain =“。mydomain.com”;
您需要确保将每个应用程序配置为使用公共状态服务器或db支持的会话。
答案 4 :(得分:0)
在应用程序之间共享登录(如上所述)与在应用程序之间共享ASP.NET会话完全不同。
为什么要在应用程序之间共享会话?
ASP.NET Session是用户与一个ASP.NET应用程序当前交互的隐喻。它存在于ASP.NET中,使我们可以在用户使用您的应用程序时在各种页面请求之间存储临时状态数据。
如果您的申请非常密切相关,例如用户可以同时或几乎同时使用它们,您可以考虑将它们合并到一个ASP.NET应用程序中。
如果您的应用程序不是那么紧密相关,那么它们应该共享相同的数据库作为交换数据的方式,或者使用API,例如基于Web Services交换信息。
希望有所帮助。