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