package com.hwlcn.security.web.subject.support; import com.hwlcn.security.mgt.SecurityManager; import com.hwlcn.security.session.Session; import com.hwlcn.security.session.mgt.SessionContext; import com.hwlcn.security.subject.PrincipalCollection; import com.hwlcn.security.subject.support.DelegatingSubject; import com.hwlcn.security.util.StringUtils; import com.hwlcn.security.web.session.mgt.DefaultWebSessionContext; import com.hwlcn.security.web.session.mgt.WebSessionContext; import com.hwlcn.security.web.subject.WebSubject; import com.hwlcn.security.web.util.WebUtils; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class WebDelegatingSubject extends DelegatingSubject implements WebSubject { private static final long serialVersionUID = -1655724323350159250L; private final ServletRequest servletRequest; private final ServletResponse servletResponse; public WebDelegatingSubject(PrincipalCollection principals, boolean authenticated, String host, Session session, ServletRequest request, ServletResponse response, SecurityManager securityManager) { this(principals, authenticated, host, session, true, request, response, securityManager); } public WebDelegatingSubject(PrincipalCollection principals, boolean authenticated, String host, Session session, boolean sessionEnabled, ServletRequest request, ServletResponse response, SecurityManager securityManager) { super(principals, authenticated, host, session, sessionEnabled, securityManager); this.servletRequest = request; this.servletResponse = response; } public ServletRequest getServletRequest() { return servletRequest; } public ServletResponse getServletResponse() { return servletResponse; } @Override protected boolean isSessionCreationEnabled() { boolean enabled = super.isSessionCreationEnabled(); return enabled && WebUtils._isSessionCreationEnabled(this); } @Override protected SessionContext createSessionContext() { WebSessionContext wsc = new DefaultWebSessionContext(); String host = getHost(); if (StringUtils.hasText(host)) { wsc.setHost(host); } wsc.setServletRequest(this.servletRequest); wsc.setServletResponse(this.servletResponse); return wsc; } }