我已经使用node.js express编写了一个rest api。用户和密码存储在mysql表中,当您登录时,如果密码和用户名匹配,它将生成一个jwt。当执行任何重要操作(例如在数据库中插入/删除/更新数据)时,通过api检查/验证此jwt
在客户端,现在我想安全地存储生成的jwt,并在需要时将其传递给http请求。客户端是用java/javafx编写的,并使用mvc模式。我现在这样做的方式是(当用户登录时,我将jwt作为字符串存储在名为token的类中):
public class LoginService {
private final OkHttpClient client = new OkHttpClient();
public static Token userToken;
int responseCode;
Gson gson = new Gson();
protected Task<Integer> login(LoginModel loginModel) throws IOException {
return new Task<>() {
@Override
protected Integer call() {
DDatabase.getScene().setCursor(Cursor.WAIT);
RequestBody formBody = new FormBody.Builder()
.add("username", loginModel.getUsername())
.add("password", loginModel.getPassword())
.build();
Request request = new Request.Builder()
.url("http://localhost:3000/api/users/login")
.post(formBody)
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.code());
responseCode = response.code();
String responseToken= response.body().string();
userToken = (Token) gson.fromJson(responseToken, Token.class);
System.out.println(userToken.getToken());
DDatabase.getScene().setCursor(Cursor.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
DDatabase.getScene().setCursor(Cursor.DEFAULT);
}
return responseCode;
}
};
}}
令牌类:
public class Token {
private final String token;
public Token(String token) {
this.token = token;
}
public String getToken() {
return token;
}}
我现在的问题是:还有什么其他方法可以存储这个令牌,并且只有在我需要将它添加到http请求时才能访问它?我现在这样做是可行的,但我很确定这不是最安全的。
提前感谢您抽出时间!
暂无答案!
目前还没有任何答案,快来回答吧!