如何获得用RequestMapping ?编写的绝对URL
守则如下:
@RequestMapping("/user/{id}") public User get(){ String url = "/user/{id}"; };
发布于 2022-02-21 15:02:28
ServerHttpRequest request = (ServerHttpRequest) exchange.getRequest();
使用request.getURI().getPath()
,我能够获得API路径。
@Component
public class ServerAuthEntryPointJwt implements ServerAuthenticationEntryPoint {
private static final Logger logger = LoggerFactory.getLogger(ServerAuthEntryPointJwt.class);
@Override
public Mono<Void> commence(ServerWebExchange exchange, AuthenticationException ex) {
// TODO Auto-generated method stub
logger.error("Unauthorized error: {}", ex.getMessage());
ServerHttpRequest request = (ServerHttpRequest) exchange.getRequest();
ServerHttpResponse response = (ServerHttpResponse) exchange.getResponse();
// response.set(MediaType.APPLICATION_JSON_VALUE);
response.setStatusCode(HttpStatus.UNAUTHORIZED);
final Map<String, Object> body = new HashMap<>();
body.put("status", HttpStatus.UNAUTHORIZED);
body.put("error", "Unauthorized");
body.put("message", ex.getMessage());
body.put("path", request.getURI().getPath());
response.getHeaders().add(HttpHeaders.CONTENT_TYPE, "application/json");
JSONObject fadfa = new JSONObject(body);
byte[] bytes = fadfa.toString().getBytes(StandardCharsets.UTF_8);
DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(bytes);
return exchange.getResponse().writeWith(Flux.just(buffer));
}
}
响应:
{
"path": "/admin-service/conversation-management/conversations",
"error": "Unauthorized",
"message": "Not Authenticated",
"status": "UNAUTHORIZED"
}
https://stackoverflow.com/questions/58678562
复制相似问题