@Component public class MyFilter extends OncePerRequestFilter { @Resource private RedisUtil redisUtil; /** * 获取头部head的token * 判断token * 从redis获取数据判断,放到session里面,下次获取session对应的用户。 * @param request * @param response * @param filterChain * @throws ServletException * @throws IOException */ @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { // Object stringData = redisUtil.get("cp_140B2EA628484A26AFD08D2D8965D463"); String token = request.getHeader("token"); if(StringUtils.isEmpty(token)){ response.getWriter().write( JSON.toJSONString(ResultsController.resultsFailed("token is null")) ); return; } String fromBase64 = Base64.getFromBase64(token);//解密 Object stringData = redisUtil.get(fromBase64); System.out.printf("===="+stringData); if(null == stringData || StringUtils.isEmpty(stringData.toString())){ response.getWriter().write( JSON.toJSONString(ResultsController.resultsFailed("token is wrong!")) ); return; } User user = JsonUtil.fromJson(stringData.toString(), User.class); HashMap<String, Object> attributes = new HashMap<>(); attributes.put("userId", user.getId()); final Assertion assertion = new AssertionImpl(new AttributePrincipalImpl("userId", attributes)); request.getSession().setAttribute("user", assertion); AssertionHolder.setAssertion(assertion); // filterChain.doFilter(request, response); doFilter(request,response,filterChain); }
}