ZBLOG

import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.security.Decoders; import io.jsonwebtoken.security.Keys; import javafx.application.Application; import javafx.geometry.In...

在这段代码中,您使用了 io.jsonwebtoken.security.Decoders 类来解码 Base64 编码的密钥。为了使用 java.util.Base64 类替换 Decoders 类,您需要修改以下行:

SecretKey a = Keys.hmacShaKeyFor(Decoders.BASE64.decode(b));

改为:

byte[] decodedKey = Base64.getDecoder().decode(b);
SecretKey a = Keys.hmacShaKeyFor(decodedKey);

此外,您还需要导入 javax.crypto.SecretKey 类:

import javax.crypto.SecretKey;

修改后的完整代码如下所示:

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

import java.util.Date;
import java.util.concurrent.TimeUnit;

import java.util.Base64; // 导入 Base64 类
import javax.crypto.SecretKey; // 导入 SecretKey 类

public class JWTGeneratorGUI extends Application {

    @Override
    public void start(Stage primaryStage) {
        // 创建密钥输入框和标签
        Label secretLabel = new Label("nacos密钥: ");
        PasswordField secretField = new PasswordField();
        secretField.setPromptText("请输入nacos密钥");

        // 创建用户名输入框和标签
        Label usernameLabel = new Label("新建用户名:");
        TextField usernameField = new TextField();
        usernameField.setPromptText("请输入要生成token的用户名");

        // 创建生成 token 按钮
        Button generateButton = new Button("生成 token");
        generateButton.setOnAction(e -> {
            String b = secretField.getText();
            byte[] decodedKey = Base64.getDecoder().decode(b); // 解码密钥
            SecretKey a = Keys.hmacShaKeyFor(decodedKey);
            Date validity = new Date(System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(2140000000));
            String nacos = usernameField.getText();
            Claims claims = Jwts.claims().setSubject(nacos);
            String token = Jwts.builder().setClaims(claims).setExpiration(validity).signWith(a, SignatureAlgorithm.HS256).compact();
            System.out.println("生成的 token 为:" + token);
        });

        // 创建布局
        GridPane grid = new GridPane();
        grid.setAlignment(Pos.CENTER);
        grid.setHgap(10);
        grid.setVgap(10);
        grid.setPadding(new Insets(25, 25, 25, 25));
        grid.add(secretLabel, 0, 0);
        grid.add(secretField, 1, 0);
        grid.add(usernameLabel, 0, 1);
        grid.add(usernameField, 1, 1);
        grid.add(generateButton, 1, 2);

        // 创建场景和设置主窗口
        Scene scene = new Scene(grid, 400, 250);
        primaryStage.setTitle("JWTGeneratorGUI");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
         launch(args); 
    }
}

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=3965

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?