在 Volley 请求中添加 JWT 令牌
Posted
技术标签:
【中文标题】在 Volley 请求中添加 JWT 令牌【英文标题】:Adding JWT Token in Volley Request 【发布时间】:2016-03-17 18:10:44 【问题描述】:我在后端使用 Node.js,并且需要在 GET 请求的标头中发送一些参数(参数)和 jwt 令牌(用于授权)。 我在节点服务器上使用 express-jwt 模块。该请求需要在那里使用 jwt 令牌进行授权。简单地将令牌作为参数发送在那里不起作用。
private void getInfo(final String instanceId, final String token)
//token is jwt token
StringRequest strReq = new StringRequest(Request.Method.GET,
Config.URL_GET_ID_INFO, new Response.Listener<String>()
@Override
public void onResponse(String response)
Log.d(TAG, response);
try
JSONObject responseObj = new JSONObject(response);
boolean error = responseObj.getBoolean("error");
String message = responseObj.getString("message");
if (!error)
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
else
Toast.makeText(getApplicationContext(),
"Error: " + message,
Toast.LENGTH_LONG).show();
// hiding the progress bar
//progressBar.setVisibility(View.GONE);
catch (JSONException e)
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
// progressBar.setVisibility(View.GONE);
, new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
Log.e(TAG, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
//progressBar.setVisibility(View.GONE);
)
@Override
protected Map<String, String> getParams()
Map<String, String> params = new HashMap<String , String>();
params.put("instanceId", instanceId);
//Need to send jwt along with params, but do not know how to include it in the request.
Log.e(TAG, "Posting params: " + params.toString());
return params;
;
// Adding request to request queue
MyApplication.getInstance().addToRequestQueue(strReq);
`
【问题讨论】:
您确定服务器不希望您的请求标头中包含令牌吗?在请求正文中发送令牌是相当不寻常的。通常你会做类似RequestObject.addHeader( "auth-token" , token )
然后服务器端会验证const token = req.headers["token"]; //proceed to process token
【参考方案1】:
只需覆盖 Request 的方法 getHeaders()
这是一个例子:
@Override
public Map<String, String> getHeaders() throws AuthFailureError
Map<String, String> params = new HashMap<String, String>();
params.put("Authorization", "Bearer "+ yourToken);
return params;
【讨论】:
我使用了这段代码,但是当我获得访问另一个列表的令牌时,它什么也没显示,请指导我解决这个问题以上是关于在 Volley 请求中添加 JWT 令牌的主要内容,如果未能解决你的问题,请参考以下文章
我们可以在 aws 中请求 jwt id 令牌时添加自定义数据吗