gpt4 book ai didi

android - 在哪里存储 JWT token ?

转载 作者:IT老高 更新时间:2023-10-28 23:22:17 25 4
gpt4 key购买 nike

我正在实现一个需要身份验证的 REST 服务。我正在使用 JWT .

现在 Android App 在登录时发送请求,获取 token ,并且必须在每个后续请求的 header 中发送 token 。

我的问题是,如何存储 token ,或者我应该将它存储在哪里?

  • 共享偏好
  • SQLite 数据库
  • 在文件中

最佳实践方法是什么?还是我的做法完全错误?

最佳答案

如果您使用 REST 服务并希望存储 JWT,最好的可用方式是 SharedPreferences。为了安全起见,您应该存储在 PrivateMode 中。
SharedPreferenceSharedPreference.Editor 用于存储和检索 JWT。在用户名和密码的 POST 请求后检索 JWT

 private void makeJsonRequest() {    
String json_req = "json_req";
// String url = getContext().getString(R.string.LOGIN_URL);
String url="";
final JSONObject obj=new JSONObject();
try{
obj.put("username",name);
obj.put("password",pass);

}catch (JSONException e)
{
e.printStackTrace();
}

JsonObjectRequest req = new JsonObjectRequest(Request.Method.POST, url, obj,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}

}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
return headers;
}
};
AppController.getInstance().addToRequestQueue(req, json_req);

要从响应中检索 JWT 并保存在共享首选项中使用

SharedPreferences prefs;
SharedPreferences.Editor edit;
prefs=getActivity().getSharedPreferences("myPrefs",Context.MODE_PRIVATE);
edit=prefs.edit();
try {
String saveToken=response.getString("token");
edit.putString("token",saveToken);
Log.i("Login",saveToken);
edit.commit();
}
catch (JSONException e)
{
e.printStackTrace();
}

从 SharedPreference 中获取 Token

private void getToken() {
prefs=this.getActivity().getSharedPreferences("myPrefs",Context.MODE_PRIVATE);
String token = prefs.getString("token","");
}

关于android - 在哪里存储 JWT token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34191731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com