【问题标题】:Best way to track user activity using JWT and spring boot使用 JWT 和 Spring Boot 跟踪用户活动的最佳方法
【发布时间】:2020-11-28 13:12:33
【问题描述】:

我有一点需要澄清的情况。我使用 Angular 8 为前端和使用 Spring boot 的 Web 服务开发了一个全栈 Web 应用程序。

我已经使用 JWT 令牌实现了身份验证和授权,这里一切正常,但我无法维护状态,即用户登录或注销时。

我无法维护会话,该会话在用户登录时有效,在用户注销时无效。

因此,如果有人能告诉我如何实现会话或任何其他我可以知道哪个用户在任何特定时间登录或注销的事情。

【问题讨论】:

  • 您存储 JWT 客户端,如果令牌已过期或被服务器拒绝,则您将客户端注销。
  • 谢谢,但在客户端存储 JWT 令牌不会告诉我用户何时处于活动或非活动状态。
  • 您的 JWT 在每次请求时都会发送到后端,因此您将知道客户端何时处于活动状态。
  • 我不建议使用 jwt 作为会话令牌,您可以在此处阅读原因 developer.okta.com/blog/2017/08/17/… 。您可以使用带有 redis 的 spring session 来维护您的 session docs.spring.io/spring-session/docs/current/reference/html5/…
  • 当您以角度存储 JWT 时,保存它到达的时间。通常 JWT 会在 15 分钟后过期,因此超过该时间的任何交互都会将用户重定向到登录页面。

标签: angular spring spring-mvc session jwt-auth


【解决方案1】:

即使我使用 JWT 令牌进行身份验证和授权。 当您调用任何 api 时,您会通过此令牌进行身份验证,在那里您检查用户的有效性。 但是,如果您想知道当前登录的是哪个用户以及该用户的到期时间,您可以将配置文件存储在 localstorage 中。 每当您想要用户的任何信息时,您都可以通过 localstorage 访问它。

存储在 localstorage 中的数据是特定于选项卡的。因此,一个选项卡将在本地存储中拥有自己的数据。

【讨论】:

  • ok 现在假设 JWT 令牌有 15 分钟的过期时间,任何成功登录后的用户都有 15 分钟的令牌但是如果用户在登录后关闭浏览器或关闭系统怎么办,那么在这个场景中,用户由于令牌而处于活动状态,但在物理上用户处于非活动状态。我无法使用 JWT 监控用户的这种状态。
  • 当你关闭浏览器时,localstorage 也会被清空,这样用户在这种情况下也不会处于活动状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-26
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多