644e4f64560da69177d5220b3ddce9ac20b13a52
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.common.core.transmit.filter;
2
3 import java.io.IOException;
4
5 import javax.servlet.Filter;
6 import javax.servlet.FilterChain;
7 import javax.servlet.FilterConfig;
8 import javax.servlet.ServletException;
9 import javax.servlet.ServletRequest;
10 import javax.servlet.ServletResponse;
11 import javax.servlet.http.HttpServletRequest;
12
13 import org.apache.commons.codec.binary.Base64;
14 import org.apache.commons.lang3.StringUtils;
15
16 import com.alibaba.fastjson.JSON;
17 import com.supwisdom.institute.backend.common.core.transmit.user.User;
18 import com.supwisdom.institute.backend.common.core.transmit.user.UserContext;
19
20 import lombok.extern.slf4j.Slf4j;
21
22 @Slf4j
23 public class SimpleUserTransmitFilter implements Filter {
24
25   @Override
26   public void init(FilterConfig filterConfig) throws ServletException {
27     
28   }
29
30   @Override
31   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
32     HttpServletRequest request = (HttpServletRequest) servletRequest;
33     
34     String headerValue = request.getHeader(UserContext.KEY_USER_IN_HTTP_HEADER);
35     log.debug("Header {} is: {}", UserContext.KEY_USER_IN_HTTP_HEADER, headerValue);
36     if (StringUtils.isNotBlank(headerValue)) {
37       try {
38         //String jsonUser = URLDecoder.decode(headerValue,"UTF-8");
39         String jsonUser = new String(Base64.decodeBase64(headerValue), "UTF-8");
40         log.debug("jsonUser is: {}", jsonUser);
41         
42         User user = JSON.parseObject(jsonUser, User.class);
43         log.debug("User is: {}", user);
44         
45         UserContext.setUser(user);
46         log.debug("User get from header: ok");
47       } catch (Exception e) {
48         log.warn("User get from header: error", e);
49       }
50     }
51     
52     filterChain.doFilter(servletRequest, servletResponse);
53   }
54
55   @Override
56   public void destroy() {
57     
58   }
59
60 }