Yeah, I think they are hitting the db.
https://github.com/LemmyNet/lemmy/pull/1493
If I'm understanding correctly, they are storing the last password change timestamp in the db: local_user.validator_time and then when they fetch the logged-in user details for a request they compare the timestamp of the token to that validator_time and reject the jwt if it's greater.
I don't think lemmy is using jwt because they really needed the low overhead, most of these requests need to hit the db regardless, they are (IMO) just using it because it was simple to use initially.
This does make me wonder if there are some API requests which don't call check_validator_time() and would still be usable after a pw change
definitely not single handedly but I'm not goign to pretend they aren't helping quite a bit. All the foss parts mostly existed before valve got involved