Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中重置/更改密码时,如何使先前生成的JWT令牌无效_Java_Jwt - Fatal编程技术网

在java中重置/更改密码时,如何使先前生成的JWT令牌无效

在java中重置/更改密码时,如何使先前生成的JWT令牌无效,java,jwt,Java,Jwt,我已经创建了AccessToken(JWT token), 我想在重置密码/更改密码时使该令牌无效 (即:旧的accessToken应该无效,新的应该有效)我认为您必须将jwt令牌存储在数据库中(最好存储在内存数据库中)。当用户更改密码时,删除特定用户的令牌。每次验证令牌时,都必须检查数据库中是否存在该令牌 我认为您必须将jwt令牌存储在数据库中(最好存储在内存数据库中)。当用户更改密码时,删除特定用户的令牌。每次验证令牌时,都必须检查数据库中是否存在该令牌 首先,在成功重置密码后,在客户端使J

我已经创建了AccessToken(JWT token), 我想在重置密码/更改密码时使该令牌无效
(即:旧的accessToken应该无效,新的应该有效)

我认为您必须将jwt令牌存储在数据库中(最好存储在内存数据库中)。当用户更改密码时,删除特定用户的令牌。每次验证令牌时,都必须检查数据库中是否存在该令牌


我认为您必须将jwt令牌存储在数据库中(最好存储在内存数据库中)。当用户更改密码时,删除特定用户的令牌。每次验证令牌时,都必须检查数据库中是否存在该令牌


首先,在成功重置密码后,在客户端使JWT失效/删除JWT

在表中捕获密码更改时间戳

在JWT令牌的有效负载中提供“iat(iat)”时间戳

在服务器中解码令牌时,检查“iat”时间戳是否早于密码更改时间戳。如果是,则使令牌无效


使用此机制,您不必担心用户有多个JWT的情况,但读取数据库中的密码更改时间戳会有一些开销。

首先,在成功重置密码时,在客户端使JWT无效/删除

在表中捕获密码更改时间戳

在JWT令牌的有效负载中提供“iat(iat)”时间戳

在服务器中解码令牌时,检查“iat”时间戳是否早于密码更改时间戳。如果是,则使令牌无效


使用这种机制,您不必担心用户有多个JWT的情况,但在读取数据库中的密码更改时间戳时会有一些开销。

一种方法是在数据库中保存一个类似于
标记的字段。然后将
用户id
令牌seq
都包含在JWT中。在密码重置过程中,您可以增加
令牌_seq
字段。验证JWT时,请同时检查
user\u id
token\u seq

这为您提供了一种随时使所有“旧”令牌失效的方法


更新:来自的另一种方法是使用您已经为用户存储的任何密码值的散列。这意味着当密码更改时,任何旧令牌都将自动失效。

一种方法是在数据库中保存一个类似于
token\u seq
的字段。然后将
用户id
令牌seq
都包含在JWT中。在密码重置过程中,您可以增加
令牌_seq
字段。验证JWT时,请同时检查
user\u id
token\u seq

这为您提供了一种随时使所有“旧”令牌失效的方法


更新:来自的另一种方法是使用您已经为用户存储的任何密码值的散列。这意味着,当密码更改时,任何旧令牌都将自动失效。

我的答案可能会迟到,但我认为这可以帮助其他人。 如果您想在更改密码后使jwt无效,这很容易,但您只需要了解,当您更改密钥时,jwt令牌不再有效。您需要做的是将哈希密码作为jwt的secet密钥,并确保新密码与旧密码相差不大,并使其无效我知道就这样

奖金


请确保使用expire(过期时间)为短时间,如1小时,以使其更安全

我的答案可能会迟到,但我认为它可以帮助其他人。 如果您想在更改密码后使jwt无效,这很容易,但您只需要了解,当您更改密钥时,jwt令牌不再有效。您需要做的是将哈希密码作为jwt的secet密钥,并确保新密码与旧密码相差不大,并使其无效我知道就这样

奖金


确保使用expire到1小时这样的少量时间,以使其更安全

他询问的是jwt代币。如果您将jwt令牌存储在db中,那么使用它们是没有意义的。他正在询问关于jwt令牌的问题。如果您将jwt令牌存储在db中,那么使用jwt令牌没有意义。如果您需要访问db来检查它,jwt有什么意义?最好使用存储在db中的常用令牌。是吗?如果你需要访问数据库来检查它,jwt有什么意义?最好使用存储在db中的常用令牌。不是吗?