Преобразовать httpservletrequest в многопользовательскийJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Преобразовать httpservletrequest в многопользовательский

Сообщение Anonymous »

Я начал изучать Java немного назад, и я работаю над веб-API, используя Spring Boot. Я хочу войти в систему запрос, используя фильтр, который сохраняет журналы в базе данных. Вы можете создавать карты и размещать файлы в карты, вы также можете положить карты в карты. Но когда я пытаюсь войти в систему, когда пользователь загружает файл, мне нужен фильтр, чтобы распознать, что запрос, как MultipartFile, чтобы я мог изменить контент, чтобы журнал не загружал фактическое содержимое файла, а не некоторую информацию о файле .
Это мой фильтр. < /p>
@Component
@RequiredArgsConstructor
public class ActivityLogFilter extends OncePerRequestFilter {

private final ActivityLogRepository activityLogRepository;

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
ContentCachingRequestWrapper wrappedRequest = new ContentCachingRequestWrapper(request);
ContentCachingResponseWrapper wrappedResponse = new ContentCachingResponseWrapper(response);

filterChain.doFilter(wrappedRequest, wrappedResponse);

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String username = (authentication != null && authentication.isAuthenticated()) ? authentication.getName() : "Anonymous";
String method = request.getMethod();
String endpoint = request.getRequestURI();
int statusCode = response.getStatus();

String requestBody = processRequestBody(wrappedRequest);
String responseBody = processResponseBody(wrappedResponse);
ActivityLog log = new ActivityLog();
log.setUsername(username);
log.setMethod(method);
log.setEndpoint(endpoint);
log.setStatusCode(statusCode);
//log.setRequestBody(requestBody);
//log.setResponseBody(responseBody);
activityLogRepository.save(log);

wrappedResponse.copyBodyToResponse();
}

private String processRequestBody(HttpServletRequest request) {
ContentCachingRequestWrapper wrapper = (ContentCachingRequestWrapper) request;
byte[] buf = wrapper.getContentAsByteArray();
String body = (buf.length > 0) ? new String(buf, StandardCharsets.UTF_8) : "";
return maskSensitiveData(body);
}

private String processResponseBody(ContentCachingResponseWrapper response) {
byte[] buf = response.getContentAsByteArray();
return (buf.length > 0) ? new String(buf, StandardCharsets.UTF_8) : "";
}

private String maskSensitiveData(String requestBody) {
if (requestBody.contains("password")) {
requestBody = requestBody.replaceAll("\"password\":\"[^\"]+\"", "\"password\":\"****\"");
}
if (requestBody.contains("token")) {
requestBody = requestBody.replaceAll("\"token\":\"[^\"]+\"", "\"token\":\"****\"");
}
return requestBody;
}
}
< /code>
Этот код в настоящее время не пытается получить запрос, потому что я никогда не заставлял его работать, но как я могу преобразовать httpservlectrequest в многократный When i try to cast it, it casts an exception saying
class org.springframework.security.web.servletapi.HttpServlet3RequestFactory$Servlet3SecurityContextHolderAwareRequestWrapper cannot be cast to class org.springframework.web.multipart.MultipartHttpServletRequest (org.springframework.security .web.servletapi.httpservlet3RequestFactory $ servlet3SecurityContexTholderAwarerEquestWrapper и org.springframework.web.multipart.multiparthttpservletRequest I в Unnyade of Loader 'App'). >if (request instanceof MultipartHttpServletRequest multipartRequest) {
return extractFileMetadata(multipartRequest);
}
< /code>
Но это тоже не работает. Кто -нибудь знает, как я могу решить эту проблему?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... letrequest
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»