我正在尝试将身份验证服务注入Filter
-
@Autowired
AuthRequestService authService;
并用在doFiler
方法 -
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
System.out.println("SAPServiceFilter: "+ req.getRequestURI());
//TODO - create auth sender
authService.isAuthnticate((HttpServletRequest)request); //null
chain.doFilter(request, response);
}
我的过滤器类在我的子包中@SpringBootApplication
类并注释为@service
-
@Service
public class AuthRequestService {
@PostConstruct
public void init() {
System.out.println("AuthRequestService @PostConstruct");
}
public boolean isAuthnticate(HttpServletRequest request) {
System.out.println("isAuthnticate");
return true;
}
}
当使用 - 列出我所有的豆时,该类也会出现
for (String name : applicationContext.getBeanDefinitionNames()) {
System.out.println(name);
}
还是在调试的时候authService
为 null,过滤器注册的最后一件事FilterRegistrationBean
-
FilterRegistrationBean<SAPServiceFilter> filterRegBean = new FilterRegistrationBean<>();
filterRegBean.setFilter(new SAPServiceFilter());
您可以使用构造函数注入。假设您的过滤器注册 bean 位于组件中并且可以访问该服务,您可以在那里自动装配它并通过构造函数传递它
@Autowired
AuthRequestService authRequestService;
[...]
FilterRegistrationBean<SAPServiceFilter> filterRegBean = new FilterRegistrationBean<>();
filterRegBean.setFilter(new SAPServiceFilter(authRequestService));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)