XuqmGroup-Server/license-service/src/main/java/com/xuqm/license/service/LicenseAuthService.java

49 行
1.5 KiB
Java

package com.xuqm.license.service;
import com.xuqm.common.security.JwtUtil;
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
public class LicenseAuthService {
private final JwtUtil jwtUtil;
public LicenseAuthService(JwtUtil jwtUtil) {
this.jwtUtil = jwtUtil;
}
2026-05-15 21:42:10 +08:00
public String generateToken(String appKey, String deviceId, String recordId) {
return jwtUtil.generate(deviceId, Map.of(
2026-05-15 21:42:10 +08:00
"appKey", appKey,
"deviceId", deviceId,
"recordId", recordId
));
}
2026-05-15 21:42:10 +08:00
public boolean verifyTokenPayload(String token, String appKey, String deviceId) {
try {
var claims = jwtUtil.parse(token);
2026-05-15 21:42:10 +08:00
String claimAppKey = claims.get("appKey", String.class);
String claimDeviceId = firstNonNull(claims.get("deviceId", String.class), claims.get("device_id", String.class));
2026-05-15 21:42:10 +08:00
return appKey.equals(claimAppKey) && deviceId.equals(claimDeviceId);
} catch (Exception e) {
return false;
}
}
public String getRecordIdFromToken(String token) {
try {
var claims = jwtUtil.parse(token);
return firstNonNull(claims.get("recordId", String.class), claims.get("record_id", String.class));
} catch (Exception e) {
return null;
}
}
private static String firstNonNull(String value, String fallback) {
return value != null ? value : fallback;
}
}