public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String authToken = ((HttpServletRequest) request).getHeader("x-auth-token"); if ((null != authToken) && !authToken.trim().equals("") && !authToken.trim().equalsIgnoreCase("null")) { String strToken = authToken; System.out.println("Token: " + strToken); if (tokenServiceImpl.validate(strToken)) { System.out.println("valid token found"); User user = tokenServiceImpl.getUserFromToken(strToken); UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword()); authentication.setDetails( new WebAuthenticationDetailsSource().buildDetails((HttpServletRequest) request)); SecurityContextHolder.getContext() .setAuthentication(authManager.authenticate(authentication)); } else { System.out.println("invalid token"); } } else { System.out.println("no token found"); } // continue thru the filter chain chain.doFilter(request, response); }
@RequestMapping(value = "/login", method = RequestMethod.POST) public ModelMap login(@RequestBody User user, HttpServletResponse response) { ModelMap map = new ModelMap(); try { User dbUser = userServiceImpl.getUser(user.getUsername(), user.getPassword()); if (dbUser != null) { String token = tokenServiceImpl.getToken(dbUser); if (null != token && !token.equals("")) { map.addAttribute("success", true); response.setHeader("x-auth-token", token); } else { map.addAttribute("error", true); } } } catch (ApplicationException e) { map.addAttribute("error", true); } return map; }