【问题标题】:Logout in spring controller在弹簧控制器中注销
【发布时间】:2020-08-25 20:14:17
【问题描述】:

我想知道如何从服务器撤销我的 JWT 令牌。为什么我需要它,因为那时客户端将从应用程序中注销。它应该杀死客户端的现有令牌。但我想知道如何实现它。我从谷歌搜索那里只解释了如何进行身份验证。

【问题讨论】:

    标签: java spring jwt


    【解决方案1】:

    在不了解您的设置的情况下,我将不得不使用一些假设。在大多数情况下,访问令牌(不仅仅是 JWT)将有一段时间存在,即它们有效且服务提供者(您的服务)不会再次检查其有效性(出于性能原因)的时间段。令牌过期后,服务提供者通常会使用身份提供者(身份验证服务器)提供的刷新令牌来为该用户获取新的访问令牌 - 如果仍然登录。

    因此,如果用户注销(并且身份提供者知道这一点)刷新访问令牌将失败,因此您会知道用户已注销。在那之前,服务提供商不会尝试刷新,也不会知道用户已注销(在其他地方)。

    怎么办?您可能希望将活动访问令牌和刷新令牌存储在您的应用程序(服务提供者)中,如果用户注销,您将删除与该用户关联的那些。然后用户将被重定向到身份提供者。

    如果用户在其他地方注销,身份提供者需要通知所有服务提供者删除某些访问和刷新令牌。

    【讨论】:

    • 我明白这就是为什么我应该将所有令牌存储在数据库中。要知道哪些还活着哪些已经过期。但事实上,我如何才能从服务器撤销现有令牌,直到它自己过期
    • @JahongirSabirov 您通常需要告诉身份提供者用户已注销,并且其中大多数提供了一个 API 来执行此操作。有关更多信息,请查看此处:baeldung.com/logout-spring-security-oauth(如果您使用其他东西,它可能仍然可以让您开始/指向正确的方向)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    相关资源
    最近更新 更多