package cn.iocoder.yudao.module.system.service.auth; import cn.hutool.crypto.digest.DigestUtil; import jakarta.annotation.Resource; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import java.time.Duration; /** 绑定到本次企业微信扫码登录令牌的短期密码设置授权。 */ @Service public class WxcpPasswordSetupGrant { @Resource private StringRedisTemplate redis; private String key(String token) { return "wxcp:password-setup:" + DigestUtil.sha256Hex(token); } public void issue(String token, Long userId) { redis.opsForValue().set(key(token), userId.toString(), Duration.ofMinutes(10)); } public boolean valid(String token, Long userId) { return token != null && userId != null && userId.toString().equals(redis.opsForValue().get(key(token))); } public void revoke(String token) { redis.delete(key(token)); } }