में मेरे प्रमाणीकरण फ़िल्टर के अंदर सेवा को स्वत: करने में असमर्थ मैं टोकन द्वारा उपयोगकर्ता को प्रमाणित करने का प्रयास कर रहा हूं, लेकिन जब मैं 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 टिप्पणियों में follwing आज़माया गया है
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.marketplace")
public class AppConfig extends WebMvcConfigurerAdapter {
जब आप लॉग देखते हैं तो आपके बीन '' MyServices''' बनाया गया है? आप '' 'जोड़ने @ पर Component''' अपने' '' MyServices''' –
हाँ मैं @ComponentScan जोड़ने और सेवा बनाया गया था की कोशिश की कोशिश कर सकते! –
क्या आपके AppConfig क्लास में '@ कॉन्फ़िगरेशन' एनोटेशन है? –