package top.awinx.stu01.config;

import io.jsonwebtoken.security.Keys;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;

/**
 * JWT配置类（适配jjwt 0.13.0）
 */
@Configuration
public class JwtConfig {

    // 从yml配置中读取密钥
    @Value("${jwt.secret}")
    private String secret;

    // 从yml配置中读取过期时间
    @Value("${jwt.expire}")
    private long expire;

    // 从yml配置中读取请求头key
    @Value("${jwt.header}")
    private String header;

    // 从yml配置中读取令牌前缀
    @Value("${jwt.prefix}")
    private String prefix;

    /**
     * 创建JWT签名密钥（jjwt 0.13.0要求密钥长度≥256位）
     */
    @Bean
    public SecretKey jwtSecretKey() {
        // 将字符串密钥转换为SecretKey对象
        return Keys.hmacShaKeyFor(secret.getBytes(StandardCharsets.UTF_8));
    }

    // 提供getter方法，方便其他类获取配置
    public long getExpire() {
        return expire;
    }

    public String getHeader() {
        return header;
    }

    public String getPrefix() {
        return prefix;
    }
}
