c# - 在网络场场景中工作时,我可以使用什么作为通用 session ID?

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

我正在使用一个使用可扩展网络服务器的托管服务提供商,也就是我可以通过单击一个按钮从 1..n 扩展。

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

现在因为主持人不使用粘性 session ,我本来会使用的 Session Id 将不起作用,它可能会因请求而异。

我可以使用什么替代标识符来标识单个用户 session 并且当然是安全的?

(为清楚起见,我不会提供用户名或任何有关用户的数据。)

最佳答案

通常人们会为此使用数据库后端,因为数据库维护的 session 信息可以被任何网络服务器访问,而不依赖于网络服务器粘性。

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

在随后访问该网站时(如果 cookie 未被清除,则在请求中使用 session ID),任何 n 网络服务器都可以通过其 cookie 提供的 ID 和查找来识别 session 后端数据库中的相关 session 信息。

当然,Cookie 的用途更广泛 - 不仅仅是 session ID;但对于典型的、更广泛的 session 信息(即通常包含敏感信息)来说,它们是一个糟糕的选择。

关于c# - 在网络场场景中工作时,我可以使用什么作为通用 session ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21768985/

相关文章:

asp.net-mvc - ASP.NET MVC 4 使用现有用户数据库进行身份验证

html - 使用 LocalStorage 在移动 Web 应用程序中存储 Cookie 时出现问题

java - Spring MVC : Tying session attributes to each browser tab

c# - 适用于所有项目的应用程序范围设置

c# - ASP.NET 通过 AuthorizeAttribute 方法访问 Controller 属性

c# - 使用 Dapper 在 Linq 中进行多对多

c# - 数据读取器与指定的不兼容。在数据读取器中没有同名的对应列

java - 我们必须关闭 session 对象吗?

c# - .NET 字典与类属性

C# 允许用户输入条件规则