1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.shiro.web.filter.mgt;
20
21 import org.apache.shiro.util.ClassUtils;
22 import org.apache.shiro.web.filter.InvalidRequestFilter;
23 import org.apache.shiro.web.filter.authc.*;
24 import org.apache.shiro.web.filter.authz.*;
25 import org.apache.shiro.web.filter.session.NoSessionCreationFilter;
26
27 import javax.servlet.Filter;
28 import javax.servlet.FilterConfig;
29 import javax.servlet.ServletException;
30 import java.util.LinkedHashMap;
31 import java.util.Map;
32
33
34
35
36
37
38
39 public enum DefaultFilter {
40
41 anon(AnonymousFilter.class),
42 authc(FormAuthenticationFilter.class),
43 authcBasic(BasicHttpAuthenticationFilter.class),
44 authcBearer(BearerHttpAuthenticationFilter.class),
45 logout(LogoutFilter.class),
46 noSessionCreation(NoSessionCreationFilter.class),
47 perms(PermissionsAuthorizationFilter.class),
48 port(PortFilter.class),
49 rest(HttpMethodPermissionFilter.class),
50 roles(RolesAuthorizationFilter.class),
51 ssl(SslFilter.class),
52 user(UserFilter.class),
53 invalidRequest(InvalidRequestFilter.class);
54
55 private final Class<? extends Filter> filterClass;
56
57 private DefaultFilter(Class<? extends Filter> filterClass) {
58 this.filterClass = filterClass;
59 }
60
61 public Filter newInstance() {
62 return (Filter) ClassUtils.newInstance(this.filterClass);
63 }
64
65 public Class<? extends Filter> getFilterClass() {
66 return this.filterClass;
67 }
68
69 public static Map<String, Filter> createInstanceMap(FilterConfig config) {
70 Map<String, Filter> filters = new LinkedHashMap<String, Filter>(values().length);
71 for (DefaultFilter defaultFilter : values()) {
72 Filter filter = defaultFilter.newInstance();
73 if (config != null) {
74 try {
75 filter.init(config);
76 } catch (ServletException e) {
77 String msg = "Unable to correctly init default filter instance of type " +
78 filter.getClass().getName();
79 throw new IllegalStateException(msg, e);
80 }
81 }
82 filters.put(defaultFilter.name(), filter);
83 }
84 return filters;
85 }
86 }