在Web场方案中工作时,我可以将哪些用作公共会话ID?

时间:2014-02-14 01:06:59

标签: c# asp.net-mvc session authentication forms-authentication

我正在使用一个使用可扩展Web服务器的托管服务提供商,我只需点击一下按钮即可从1..n扩展。

我想用我的应用程序做的是识别浏览我网站的人的单个会话,并将他们的状态存储在数据库中。

现在因为主持人没有使用粘性会话,我所使用的Session Id将不起作用,它可能会从请求变为请求。

我可以使用哪种替代标识符来识别单个用户会话,当然是安全的?

(为了清楚起见,我没有用户名或有关用户的任何数据。)

1 个答案:

答案 0 :(得分:1)

通常会使用数据库后端,因为任何Web服务器都可以访问数据库维护的会话信息,而不依赖于Web服务器的粘性。

在访问者初次访问该网站时(在请求中没有cookie - 提供的会话ID),它可以设置一个带有会话ID的cookie - 例如GUID - 并使用会话ID将会话信息添加到数据库。

在后续访问该站点时(如果尚未清除cookie,请求中的会话ID),任何 n Web服务器都可以通过其cookie提供的ID和查找来识别会话后端数据库中的相关会话信息。

当然,Cookie可以更广泛地使用 - 除了会话ID之外;但对于典型的,更广泛的会话信息(即通常包含敏感信息),它们是一个糟糕的选择。