无法在Spring中自动连接身份验证过滤器中的服务

我正在尝试通过令牌对用户进行身份验证,但是当我尝试自动连接一个用户时,我的服务AuthenticationTokenProcessingFilter会出现空指针异常。

,如何解决此问题?

我的AuthenticationTokenProcessingFilter

@ComponentScan(basePackages = {"com.marketplace"})

public class AuthenticationTokenProcessingFilter extends GenericFilterBean {

@Autowired

@Qualifier("myServices")

private MyServices service;

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

@SuppressWarnings("unchecked")

Map<String, String[]> parms = request.getParameterMap();

if (parms.containsKey("token")) {

try {

String strToken = parms.get("token")[0]; // grab the first "token" parameter

User user = service.getUserByToken(strToken);

System.out.println("Token: " + strToken);

DateTime dt = new DateTime();

DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");

DateTime createdDate = fmt.parseDateTime(strToken);

Minutes mins = Minutes.minutesBetween(createdDate, dt);

if (user != null && mins.getMinutes() <= 30) {

System.out.println("valid token found");

List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();

authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));

UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(user.getEmailId(), user.getPassword());

token.setDetails(new WebAuthenticationDetails((HttpServletRequest) request));

Authentication authentication = new UsernamePasswordAuthenticationToken(user.getEmailId(), user.getPassword(), authorities); //this.authenticationProvider.authenticate(token);

SecurityContextHolder.getContext().setAuthentication(authentication);

}else{

System.out.println("invalid token");

}

} catch(Exception e) {

e.printStackTrace();

}

} else {

System.out.println("no token found");

}

// continue thru the filter chain

chain.doFilter(request, response);

}

}

我尝试在我中添加以下内容 AppConfig

@Bean(name="myServices")

public MyServices stockService() {

return new MyServiceImpl();

}

我的AppConfig注释是

@Configuration

@EnableWebMvc

@ComponentScan(basePackages = "com.marketplace")

public class AppConfig extends WebMvcConfigurerAdapter {

回答:

我只是通过添加使它起作用

我不确定为什么即使我尝试添加显式限定词也应该这样做。现在代码看起来像

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);

@SuppressWarnings("unchecked")

Map<String, String[]> parms = request.getParameterMap();

if (parms.containsKey("token")) {

以上是 无法在Spring中自动连接身份验证过滤器中的服务 的全部内容, 来源链接: utcz.com/qa/404840.html

回到顶部