1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.shiro.web.mgt;
20
21 import org.apache.shiro.mgt.DefaultSubjectFactory;
22 import org.apache.shiro.mgt.SecurityManager;
23 import org.apache.shiro.session.Session;
24 import org.apache.shiro.subject.PrincipalCollection;
25 import org.apache.shiro.subject.Subject;
26 import org.apache.shiro.subject.SubjectContext;
27 import org.apache.shiro.web.subject.WebSubjectContext;
28 import org.apache.shiro.web.subject.support.WebDelegatingSubject;
29
30 import javax.servlet.ServletRequest;
31 import javax.servlet.ServletResponse;
32 import org.apache.shiro.web.subject.WebSubject;
33
34
35
36
37
38
39
40
41
42
43 public class DefaultWebSubjectFactory extends DefaultSubjectFactory {
44
45 public DefaultWebSubjectFactory() {
46 super();
47 }
48
49 public Subject createSubject(SubjectContext context) {
50
51
52
53 boolean isNotBasedOnWebSubject = context.getSubject() != null && !(context.getSubject() instanceof WebSubject);
54 if (!(context instanceof WebSubjectContext) || isNotBasedOnWebSubject) {
55 return super.createSubject(context);
56 }
57 WebSubjectContext/../../org/apache/shiro/web/subject/WebSubjectContext.html#WebSubjectContext">WebSubjectContext wsc = (WebSubjectContext) context;
58 SecurityManager securityManager = wsc.resolveSecurityManager();
59 Session session = wsc.resolveSession();
60 boolean sessionEnabled = wsc.isSessionCreationEnabled();
61 PrincipalCollection principals = wsc.resolvePrincipals();
62 boolean authenticated = wsc.resolveAuthenticated();
63 String host = wsc.resolveHost();
64 ServletRequest request = wsc.resolveServletRequest();
65 ServletResponse response = wsc.resolveServletResponse();
66
67 return new WebDelegatingSubject(principals, authenticated, host, session, sessionEnabled,
68 request, response, securityManager);
69 }
70
71
72
73
74
75 @Deprecated
76 protected Subject newSubjectInstance(PrincipalCollection principals, boolean authenticated,
77 String host, Session session,
78 ServletRequest request, ServletResponse response,
79 SecurityManager securityManager) {
80 return new WebDelegatingSubject(principals, authenticated, host, session, true,
81 request, response, securityManager);
82 }
83 }