/** * Configures this instance based on the existing {@link org.apache.shiro.web.env.WebEnvironment} instance * available to the currently accessible {@link #getServletContext() servletContext}. * * @see org.apache.shiro.web.env.EnvironmentLoaderListener * @since 1.2 */ @Override public void init() throws Exception { WebEnvironment env = WebUtils.getRequiredWebEnvironment(getServletContext()); setSecurityManager(env.getWebSecurityManager()); FilterChainResolver resolver = env.getFilterChainResolver(); if (resolver != null) { setFilterChainResolver(resolver); } } }
@Override public Action inspect(AtmosphereResource r) { if (Utils.webSocketMessage(r)) return Action.CONTINUE; if (r.getRequest().localAttributes().containsKey(FrameworkConfig.SECURITY_SUBJECT) == false) { try { Subject currentUser = null; if (r.transport().equals(TRANSPORT.WEBSOCKET)) { WebEnvironment env = WebUtils.getRequiredWebEnvironment(r.getAtmosphereConfig().getServletContext()); currentUser = new WebSubject.Builder(env.getSecurityManager(), r.getRequest(), r.getResponse()).buildWebSubject(); } else { currentUser = SecurityUtils.getSubject(); } if (currentUser != null) { r.getRequest().setAttribute(FrameworkConfig.SECURITY_SUBJECT, currentUser); } } catch (UnavailableSecurityManagerException ex) { logger.info("Shiro Web Security : {}", ex.getMessage()); } catch (java.lang.IllegalStateException ex) { logger.info("Shiro Web Environment : {}", ex.getMessage()); } } return Action.CONTINUE; } }
@Override public void init() throws Exception { WebEnvironment env = WebUtils.getRequiredWebEnvironment(getServletContext()); if (env.getServletContext().getContextPath() != null) { contextPathLength = env.getServletContext().getContextPath().length(); } setSecurityManager(env.getWebSecurityManager()); FilterChainResolver resolver = env.getFilterChainResolver(); if (resolver != null) { setFilterChainResolver(resolver); } }