1
2
3
4
5
6
7
8
9
10
11
12
13
14 package chapters.mdc;
15
16 import java.io.IOException;
17 import java.security.Principal;
18
19 import javax.servlet.Filter;
20 import javax.servlet.FilterChain;
21 import javax.servlet.FilterConfig;
22 import javax.servlet.ServletException;
23 import javax.servlet.ServletRequest;
24 import javax.servlet.ServletResponse;
25 import javax.servlet.http.HttpServletRequest;
26
27 import org.slf4j.MDC;
28
29
30
31
32
33
34
35
36
37
38 public class UserServletFilter implements Filter {
39
40 private final String USER_KEY = "username";
41
42 public void destroy() {
43 }
44
45 public void doFilter(ServletRequest request, ServletResponse response,
46 FilterChain chain) throws IOException, ServletException {
47
48 boolean successfulRegistration = false;
49 HttpServletRequest req = (HttpServletRequest) request;
50 Principal principal = req.getUserPrincipal();
51
52
53
54 if (principal != null) {
55 String username = principal.getName();
56 successfulRegistration = registerUsername(username);
57 }
58
59 try {
60 chain.doFilter(request, response);
61 } finally {
62 if (successfulRegistration) {
63 MDC.remove(USER_KEY);
64 }
65 }
66 }
67
68 public void init(FilterConfig arg0) throws ServletException {
69 }
70
71
72
73
74
75
76
77 private boolean registerUsername(String username) {
78 if (username != null && username.trim().length() > 0) {
79 MDC.put(USER_KEY, username);
80 return true;
81 }
82 return false;
83 }
84
85 }