gpt4 book ai didi

java - response.sendError 使用自定义过滤器抛出异常

转载 作者:行者123 更新时间:2023-12-01 13:09:28 26 4
gpt4 key购买 nike

我有一份注册表单,提交后我需要:创建一个新用户并登录该用户。

如果用户名已在数据库中,我需要返回 409 并包含错误消息。

我创建了一个设置 HttpStatus 的自定义过滤器

public class UserSignupFilter implements Filter {
...
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;

if (userSignup(request)) {
if (userAlreadyExists(request)){
logger.info("Didnt create user since: "+e.getMessage());
response.sendError(HttpStatus.CONFLICT.value());
} else {
createUser(request);
}
}
chain.doFilter(request, response);
}
}

问题是我有时会遇到:

java.lang.IllegalStateException: Cannot call sendError() after the response has been committed.  

有更好的方法吗?我正在以编程方式设置安全性(Spring Security V 3.2),如何使用 ExceptionTranslationFilter?

最佳答案

我认为你不应该打电话:

chain.doFilter(request, response);

如果您只想发回错误代码。只需调用 return

logger.info("Didnt create user since: "+e.getMessage());
response.sendError(HttpStatus.CONFLICT.value());
return;

关于java - response.sendError 使用自定义过滤器抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23003191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com