【发布时间】:2019-04-16 19:21:16
【问题描述】:
构建 Spring Boot 应用程序,部署(通过在 Tomcat 关闭时复制到 webapps 文件夹)到本地 Tomcat8。总是报错:
未找到线程绑定请求: 您是指实际 Web 请求之外的请求属性,还是在原始接收线程之外处理请求? 如果您实际上是在 Web 请求中操作并且仍然收到此消息,则您的代码可能在 DispatcherServlet/DispatcherPortlet 之外运行: 在这种情况下,使用 RequestContextListener 或 RequestContextFilter 来暴露当前请求。
据我了解,使用 WebAuthenticationDetails 扩展实例化 bean 时会出现问题:
@Component
public class AuthDetails extends WebAuthenticationDetails{
private final AuthTarget authTarget;
public AuthDetails(HttpServletRequest request) {
super(request);
this.authTarget = AuthTarget.valueOf(request.getParameter("target"));
}
public AuthTarget getAuthTarget(){
return this.authTarget;
}
}
它无法为bean的构造提供HttpServletRequest,但我不知道如何规避它。
尝试在xml或实现中添加RequestContextListener(并标记为@WebListener),没有效果。
没有想法,如何解决。从这里尝试的示例:https://github.com/Baeldung/spring-security-registration,没有变化 - 在相似的地方出现同样的错误。
非常欢迎任何帮助。
【问题讨论】:
-
已修复,稍后会发布修复
标签: java spring-security tomcat8