public void filter()

in integrations/shiro/shiro-authc/src/main/java/org/apache/aries/jax/rs/shiro/authc/impl/SecurityManagerAssociatingFilter.java [69:97]


    public void filter(ContainerRequestContext requestContext) throws IOException {
        
        _LOG.debug("Establishing Shiro Security Context");
        
        // Bind the security manager
        ThreadContext.bind(manager);
        
        Cookie cookie = requestContext.getCookies().get(SESSION_COOKIE_NAME);
        
        // If we have a session cookie then use it to prime the session value
        if(cookie != null) {
            _LOG.debug("Found a Shiro Security Context cookie: {}. Establishing user context", cookie);
            
            _LOG.debug("Establishing user context:");
            Subject subject = new Subject.Builder(manager).sessionId(cookie.getValue()).buildSubject();
            ThreadContext.bind(subject);
            if(_LOG.isDebugEnabled()) {
                _LOG.debug("Established user context for: {}", subject.getPrincipal());
            }
        }
        
        UriInfo info = requestContext.getUriInfo();
        
        if("security/authenticate".equals(info.getPath())) {
            requestContext.abortWith(authenticate(info, requestContext.getHeaderString("user"), requestContext.getHeaderString("password")));
        } else if("security/logout".equals(info.getPath())) {
            logout();
        }
    }