【问题标题】:session handling in play framework游戏框架中的会话处理
【发布时间】:2017-12-22 15:53:04
【问题描述】:

我有一个基于 Play 框架和 Scala 的 Web 应用程序。此应用程序连接到具有许多关键空间的 Cassandra db。我有不同的用户,每个用户属于不同的单元(我们可以将每个单元称为键空间)。假设我的用户名是零售和制造,如果我使用用户名作为零售登录,它会连接到零售密钥空间并为我提供属于零售密钥空间的表中的数据,如果我使用用户名作为制造商登录,它会给我来自的数据属于制造键空间的表。

现在的问题是,如果我使用零售从 chrome 登录,它会给我来自零售密钥空间的数据,如果我打开 Firefox 并使用制造登录 它连接到制造密钥空间并检索该密钥空间的数据,现在如果我回到我使用零售用户名登录的 chrome 并执行从制造密钥空间而不是零售密钥空间检索数据的任何操作。应用程序已切换键空间,它总是 最新登录的用户名上的功能。我该如何克服这个问题。

【问题讨论】:

    标签: scala session playframework


    【解决方案1】:

    听起来您正在使用单例(全局变量)来存储所有用户共享的唯一键空间,或者每个用户至少一个键空间。相反,您想要为 每个用户会话 提供自己的密钥空间。有几种方法可以保存和恢复每个会话的用户密钥空间信息:

    • 通过 cookie
    • 通过 Java Web 令牌 (JWT)
    • 通过 HashMap 单例,其中包含每个用户会话的条目。为此,您需要一个软 HashMap,以便旧条目自我清除; Google Guava 有一个很好的实现。

    Play Framework documentation 有关于此主题的信息。

    【讨论】:

      猜你喜欢
      • 2011-11-26
      • 2011-11-09
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2011-01-17
      相关资源
      最近更新 更多