Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET单一登录-分发会话是答案吗_Asp.net_Security_Session_Distributed - Fatal编程技术网

ASP.NET单一登录-分发会话是答案吗

ASP.NET单一登录-分发会话是答案吗,asp.net,security,session,distributed,Asp.net,Security,Session,Distributed,我们有5个平衡的web服务器和各种网站。 我试图实现的是确保一次登录。 i、 e.同一用户帐户在任何给定时间不能多次登录同一网站 我正在考虑解决这个问题的方法是在服务器之间共享会话,这样我就可以控制将哪个会话分配给哪个帐户。然后我可以控制我的登录。如果用户登录并且已经有一个会话分配给他们的用户帐户,我可以终止第一个会话或拒绝登录 我不想失去平衡服务器的好处,因此使用单个Sql Server作为会话状态服务器,或者使用单个服务器处理登录不是一个选项 分布式会话(类似)是实现这一点的正确方法吗 或者

我们有5个平衡的web服务器和各种网站。 我试图实现的是确保一次登录。 i、 e.同一用户帐户在任何给定时间不能多次登录同一网站

我正在考虑解决这个问题的方法是在服务器之间共享会话,这样我就可以控制将哪个会话分配给哪个帐户。然后我可以控制我的登录。如果用户登录并且已经有一个会话分配给他们的用户帐户,我可以终止第一个会话或拒绝登录

我不想失去平衡服务器的好处,因此使用单个Sql Server作为会话状态服务器,或者使用单个服务器处理登录不是一个选项

分布式会话(类似)是实现这一点的正确方法吗


或者有没有另一种机制来处理我完全不知道的单一登录?

这里有两组问题:
1) 在web场方案中只允许一个连接的用户
2) 检测用户注销

要解决第一个问题,唯一的解决方案是对某种用户状态进行中央存储,使用中央服务器存储ASP.Net会话或其他某种集中式用户状态。此中央存储可以是SQL Server,它使用会话状态的本机管理(顺便说一句,Oracle 11中的Oracle也可以支持会话存储)、AspState服务或外部解决方案,如ScaleOut(如您所说)或其开源替代memcached(请参阅)。或者,您可以设计一个简单的集中式web服务,根据SQL Server数据库检查活动登录,这样您还可以快速创建有关已登录用户等的报告工具。


在我看来,真正的问题在于第二部分,即您需要维护web世界中可用的不同“错误注销”场景(如因崩溃而关闭浏览器或在未注销的情况下关闭应用程序),从而使应用程序能够优雅地与启用旧会话的用户协作(正如您所说,简单地终止第一个会话就可以了)。


还要记住,使用SQL server之类的状态服务器不会使您失去平衡的服务器,如果使用web场环境和共享会话的方式是这样的,那么唯一的问题在于性能(如果会话状态变大)如果您还没有适当的许可证,使用SQL Server所涉及的成本。

这里有两组问题:
1) 在web场方案中只允许一个连接的用户
2) 检测用户注销

要解决第一个问题,唯一的解决方案是对某种用户状态进行中央存储,使用中央服务器存储ASP.Net会话或其他某种集中式用户状态。此中央存储可以是SQL Server,它使用会话状态的本机管理(顺便说一句,Oracle 11中的Oracle也可以支持会话存储)、AspState服务或外部解决方案,如ScaleOut(如您所说)或其开源替代memcached(请参阅)。或者,您可以设计一个简单的集中式web服务,根据SQL Server数据库检查活动登录,这样您还可以快速创建有关已登录用户等的报告工具。


在我看来,真正的问题在于第二部分,即您需要维护web世界中可用的不同“错误注销”场景(如因崩溃而关闭浏览器或在未注销的情况下关闭应用程序),从而使应用程序能够优雅地与启用旧会话的用户协作(正如您所说,简单地终止第一个会话就可以了)。

还请记住,使用SQL server之类的状态服务器不会使您失去平衡的服务器,如果使用web场环境和共享会话的方式是这样的,那么唯一的问题在于性能(如果会话状态变大)以及在您还没有适当的许可证的情况下使用SQL server所涉及的成本