Asp.net MVC2和会话启动事件

Asp.net MVC2和会话启动事件,asp.net,asp.net-mvc,session,Asp.net,Asp.net Mvc,Session,设置: 帐户控制器,具有模板中烘焙的典型登录/注销内容。登录页面上没有太多修改。使用自定义成员资格提供程序(SQL),但我不认为这会影响我在这里要做的事情 要求: 客户端希望通过限制并发用户而不是总用户来处理许可。所以,在参考了这篇文章之后,我开始着手做我需要做的事情。这是为了跟踪每个已注册我们的应用程序的组织的最大和当前用户数。没问题,只要有一个应用程序(“max”)和应用程序(“current”),它们都是哈希表,键是组织id,值是组织的current或max users。在会话_开始时,我

设置:

帐户控制器,具有模板中烘焙的典型登录/注销内容。登录页面上没有太多修改。使用自定义成员资格提供程序(SQL),但我不认为这会影响我在这里要做的事情

要求:

客户端希望通过限制并发用户而不是总用户来处理许可。所以,在参考了这篇文章之后,我开始着手做我需要做的事情。这是为了跟踪每个已注册我们的应用程序的组织的最大和当前用户数。没问题,只要有一个应用程序(“max”)和应用程序(“current”),它们都是哈希表,键是组织id,值是组织的current或max users。在会话_开始时,我会增加当前用户的数量,检查其是否超过最大值,然后a)重定向到错误页面,或者b)让他们继续执行需要执行的操作。在会话结束时,我会减少计数

问题:


使用formsService.signIn时,会话中实际存储了什么?除了会话ID之外,我似乎无法在会话开始时收集有关会话的任何信息。因此,我无法为用户跟踪增加正确的数字。我不能向会话添加变量,因为会话启动将在我获得机会之前启动。

会话以某种方式与身份验证连接的概念是一个神话。它们彼此完全独立。会话甚至可以在多个用户之间共享,如果他们碰巧共享了会话密钥;这就是为什么您从不在会话中放置安全敏感信息。会话也可能在您登录时过期。同样,您的会话在注销后仍然处于活动状态,除非您明确放弃它

会话更像是用户特定的缓存


所以你需要接受这个事实并适应它。查看当前用户是否在会话启动期间经过身份验证。您还需要在登录期间增加,因为会话已经启动。等等。

会话以某种方式与身份验证连接的概念是一个神话。它们彼此完全独立。会话甚至可以在多个用户之间共享,如果他们碰巧共享了会话密钥;这就是为什么您从不在会话中放置安全敏感信息。会话也可能在您登录时过期。同样,您的会话在注销后仍然处于活动状态,除非您明确放弃它

会话更像是用户特定的缓存


所以你需要接受这个事实并适应它。查看当前用户是否在会话启动期间经过身份验证。您还需要在登录期间增加,因为会话已经启动。等等。

IMO,几乎不可能找到网站的并发用户。一旦页面被加载,Web服务器就没有任何迹象表明用户仍在网站上。你知道,我也有这种心态,并提出了一个很好的理由来反对它(无法确定正确的计数,阻止ppl工作,即使他们有账户等),但在一天结束时,我不支付我自己的发票:/IMO,几乎不可能找到网站的并发用户。一旦页面被加载,Web服务器就没有任何迹象表明用户仍在网站上。你知道,我也有这种心态,并提出了一个很好的论点来反对它(无法确定正确的计数,阻止ppl工作,即使他们有账户等),但在一天结束时,我不支付我自己的发票:/Yeah,只是有点想通了。我已经开始在数据库中保留一个“临时”表,跟踪每个组织的当前和最大值,并将增量/减量与存储库中的登录/注销操作联系起来。我可以从这些动作中进行检查,而不必担心会话的所有有趣含义。我只是一直认为当你登录时,你有一个会话说你是谁。如果我不是每天都学习的话,我就不会做我的工作了!Thx是的,只是有点明白了。我已经开始在数据库中保留一个“临时”表,跟踪每个组织的当前和最大值,并将增量/减量与存储库中的登录/注销操作联系起来。我可以从这些动作中进行检查,而不必担心会话的所有有趣含义。我只是一直认为当你登录时,你有一个会话说你是谁。如果我不是每天都学习的话,我就不会做我的工作了!谢谢。