c++ - 最佳实践 - session 处理/超时

标签 c++ mysql session cookies

<分区>

在使用 MySQL 的 C++ 服务器中处理 session 和超时的最佳实践是什么。

我的 C++ 服务器生成 session GUID 并将其作为 Set-Cookie 发送到客户端浏览器。

我应该让任何 Session 超时吗?

我应该将 session GUID 保存在我的 MySQL 用户表中吗?

当用户做某事时,我应该更新表中的任何时间戳还是应该直接在 C++ 服务器中保存 session 和上次操作?

我应该如何处理“保持登录状态”,永不过期 session GUID? (这可能是一个很大的安全漏洞)

最佳答案

我无法在 C++ 部分帮助您,但这里有一些关于 session (服务器端)的提示:

  • Session对象至少要维护

    • 最后一次访问(发出请求)的时间
    • 它的过期时间是每次访问时计算的,方法是将当前时间加上最大空闲时间(在 session 被视为过期之前没有进行访问的最长时间)
  • 每次访问时,都会将存储在 Session 对象中的过期时间与当前时间进行比较,以确定 session 是否已过期。如果是这种情况,则 session 无效, session 对象从 session 管理器的缓存中删除。在网络服务器的情况下,302 被发送回客户端并且 cookie 已过期。

  • session 管理器可以实现 session 缓存,该缓存可以在内存中,也可以持久保存到磁盘。将其保存到磁盘可在服务器重启时提供 session 恢复。缓存还可以是分布式缓存(例如 Memcache),它允许集群中的多个服务器共享 session 对象并提供跨服务器的负载平衡。

关于c++ - 最佳实践 - session 处理/超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15676774/

相关文章:

c++ - 为什么我们不能使用指向派生类的指针访问 protected 基类成员?

java - 将 RGB 转换为 HSB(又名 HSV)

c++ - 未定义对 `pthread_mutex_trylock' 的引用

c++ - 有没有办法在 C++ 应用程序的多次执行中保存一个值?

mysql - URL 的数据类型

java - 客户端访问 AS400 Java 包装器

mysql - MySql 过程中的 WHILE 循环返回多个结果

php - 在 Mysql 中选择日期返回错误的数据

security - 在多个设备上使用 token 和系列实现记住我

php - 在数据库中存储 session