Вы можете использовать параметр запроса и добавить его в URL вашего сокета. Затем вам нужно добавить свой JwtAuthorizationFilter, чтобы найти четвертый параметр, если заголовок пуст. Это прекрасно работает для внутреннего приложения, , но я не знаю рисков, добавляющих JWT в URL, вы должны учесть это!
/**
* Parses received jwt.
*
* @param req Http request from user.
* @return Authentication token for the user.
*/
private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest req) {
String token = req.getHeader(HEADER_STRING);
if (token == null) {
String[] params = request.getParameterValues("token");
if(params.length == 1){
token = TOKEN_TYPE + params[0];
}
}
if (token != null) {
try {
// [...]
}
} catch (JwtException e) {
// In case token is expired or invalid. Prevents status 500.
logger.error(e.getMessage());
return null;
}
return null;
}
return null;
}
На стороне angular Я использовал:
Stomp.client(`${this.url}?token=${this.jwt}`);