基本实现手机验证码,账号密码登录。腾讯云短信后台显示成功,但是收不到,也没有报错

This commit is contained in:
2025-08-06 01:31:16 +08:00
parent 66480121b4
commit 940f1d7bac
8 changed files with 314 additions and 89 deletions

View File

@@ -2,6 +2,9 @@ package com.onekeycall.videotablet.dto;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/**
* 双Token认证令牌对AccessToken + RefreshToken
* 设计要点:
@@ -20,31 +23,33 @@ public class TokenPair {
// RefreshToken过期时间戳毫秒
private long refresh_expires;
// 关联设备指纹(防御中间人攻击)[1](@ref)
private String deviceId;
private String device_id;
/**
* 全参数构造器(安全增强版)
* @param access_token JWT格式访问令牌
* @param refresh_token JWT格式刷新令牌
* @param accessExpireMs AccessToken有效期毫秒
*
* @param access_token JWT格式访问令牌
* @param refresh_token JWT格式刷新令牌
* @param accessExpireMs AccessToken有效期毫秒
* @param refreshExpireMs RefreshToken有效期毫秒
* @param deviceId 客户端设备指纹
* @param device_id 客户端设备指纹
*/
public TokenPair(String access_token, String refresh_token,
long accessExpireMs, long refreshExpireMs,
String deviceId) {
String device_id) {
this.access_token = access_token;
this.refresh_token = refresh_token;
this.access_expires = System.currentTimeMillis() + accessExpireMs;
this.refresh_expires = System.currentTimeMillis() + refreshExpireMs;
this.deviceId = deviceId;
this.device_id = device_id;
}
/**
* 快速创建方法(推荐)
* @param accessToken 访问令牌
*
* @param accessToken 访问令牌
* @param refreshToken 刷新令牌
* @param deviceId 设备指纹
* @param deviceId 设备指纹
* @return 初始化过期时间的TokenPair
*/
public static TokenPair create(String accessToken, String refreshToken, String deviceId) {
@@ -59,6 +64,7 @@ public class TokenPair {
/**
* 检查AccessToken是否过期
*
* @return true=已过期false=有效
*/
public boolean isAccessExpired() {
@@ -67,6 +73,7 @@ public class TokenPair {
/**
* 检查RefreshToken是否过期
*
* @return true=已过期false=有效
*/
public boolean isRefreshExpired() {
@@ -75,7 +82,8 @@ public class TokenPair {
/**
* 安全刷新令牌生成新TokenPair
* @param newAccessToken 新访问令牌
*
* @param newAccessToken 新访问令牌
* @param newRefreshToken 新刷新令牌
* @return 更新后的TokenPair保留原设备ID
*/
@@ -85,7 +93,17 @@ public class TokenPair {
newRefreshToken,
this.access_expires - System.currentTimeMillis(), // 剩余时间延续
this.refresh_expires - System.currentTimeMillis(),
this.deviceId // 保持设备一致性
this.device_id // 保持设备一致性
);
}
public Map<String, Object> toMap() {
Map<String, Object> map = new HashMap<>();
map.put("access_token", access_token);
map.put("refresh_token", refresh_token);
map.put("access_expires", String.valueOf(access_expires));
map.put("refresh_expires", String.valueOf(refresh_expires));
map.put("device_id", device_id);
return map;
}
}