我正在使用JWT来管理我的应用程序的服务器身份验证。我在服务器上管理它。在我的角度应用程序中,我使用angular-jwt
来管理jwt。如果它过期了如何调用刷新令牌API。我正在使用凌空进行API调用。当令牌过期时,服务器以401错误代码响应。那段时间需要调用刷新令牌api。刷新调用后,我需要在没有任何用户输入的情况下再次调用先前的API调用。
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
(method, request_url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
if (response.getInt("status") == 1) {
callback.onSuccessResponse(response.get("data"));
} else {
callback.onSuccessResponse(new JSONArray());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
NetworkResponse networkResponse = error.networkResponse;
if (networkResponse != null && networkResponse.statusCode == 401) {
}
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
String token = AppPreferencesHelper.getAccessToken(context);
headers.put("Authorization", "Bearer " + token);
return headers;
}
};
Volley.newRequestQueue(context).add(jsonObjectRequest);
答案 0 :(得分:0)
您需要调用api来验证令牌,如果它已过期而不是您可以生成新令牌。
或者如果你有登录功能,你可以在登录时检查JWT并在旧的过期时生成新的。
我在我的应用程序中使用了一种非常基本的方法,我使用每个用户的唯一电子邮件地址创建一个JWT,并将其存储在服务器的数据库中,它永不过期。每当用户注销时,我都会删除JWT,再次登录时我会生成新令牌。