我正在使用 Spring Security 并将 JWT 用作访问令牌,当客户端将访问令牌发送到服务器时,我必须更改以下内容的附加信息(元数据)此令牌并返回一个新令牌。
我该如何实现?
我尝试使用此代码,但不起作用
String authorization = Context.getHeader("Authorization");
if (authorization != null) {
String tokenValue = authorization.replace("Bearer", "").trim();
OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue);
accessToken.getAdditionalInformation().put("activeProfileId", defaultProfileId);
return accessToken.getValue();
}
return null;
答案 0 :(得分:0)
您应该从令牌中获取元数据(“声明”),然后将其添加到新的JWT构建器中,该构建器将返回新的令牌。必须在HttpResponse中输入新的JWT才能将其转发到客户端。取而代之的是,客户端必须实现拦截器才能以舒适,透明的方式检索它。
您必须以HashMap的形式获取所有其他信息,并将其放入OAuth2Authentication中。 stackoverflow.com/a/19057480/11951081
在ajax中应该是:
https://api.jquery.com/category/ajax/global-ajax-event-handlers/
$.ajaxSetup({
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', <Jwt>)
},
success:function(event,jqXHR,ajaxOptions,data ){
console.log(ajaxOptions.getResponseHeader('Authorization'))
}
})