Search in sources :

Example 1 with SecureRandomSessionIdGenerator

use of cn.taketoday.web.session.SecureRandomSessionIdGenerator in project today-infrastructure by TAKETODAY.

the class WebApplicationContextUtils method registerWebApplicationScopes.

/**
 * Register web-specific scopes ("request", "session", "globalSession", "application")
 * with the given BeanFactory, as used by the WebServletApplicationContext.
 *
 * @param beanFactory the BeanFactory to configure
 * @param sc the ServletContext that we're running within
 */
public static void registerWebApplicationScopes(ConfigurableBeanFactory beanFactory, @Nullable ServletContext sc) {
    SessionManager sessionManager = BeanFactoryUtils.find(beanFactory, SessionManager.BEAN_NAME, SessionManager.class);
    if (sessionManager == null) {
        sessionManager = new DefaultSessionManager(new MemSessionRepository(new SessionEventDispatcher(), new SecureRandomSessionIdGenerator()), null);
    }
    beanFactory.registerScope(WebApplicationContext.SCOPE_REQUEST, new RequestScope());
    beanFactory.registerScope(WebApplicationContext.SCOPE_SESSION, new SessionScope(sessionManager));
    if (sc != null) {
        ServletContextScope appScope = new ServletContextScope(sc);
        beanFactory.registerScope(WebApplicationContext.SCOPE_APPLICATION, appScope);
        // Register as ServletContext attribute, for ContextCleanupListener to detect it.
        sc.setAttribute(ServletContextScope.class.getName(), appScope);
    }
    beanFactory.registerDependency(HttpSession.class, new SessionObjectSupplier());
    beanFactory.registerDependency(ServletRequest.class, new RequestObjectSupplier());
    beanFactory.registerDependency(ServletResponse.class, new ResponseObjectSupplier());
    beanFactory.registerDependency(ServletContext.class, sc);
}
Also used : SessionEventDispatcher(cn.taketoday.web.session.SessionEventDispatcher) SecureRandomSessionIdGenerator(cn.taketoday.web.session.SecureRandomSessionIdGenerator) SessionManager(cn.taketoday.web.session.SessionManager) DefaultSessionManager(cn.taketoday.web.session.DefaultSessionManager) DefaultSessionManager(cn.taketoday.web.session.DefaultSessionManager) MemSessionRepository(cn.taketoday.web.session.MemSessionRepository)

Example 2 with SecureRandomSessionIdGenerator

use of cn.taketoday.web.session.SecureRandomSessionIdGenerator in project today-framework by TAKETODAY.

the class WebSessionConfig method sessionIdGenerator.

/**
 * @since 4.0
 */
@Component
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
@ConditionalOnMissingBean(SessionIdGenerator.class)
SessionIdGenerator sessionIdGenerator(ServerProperties serverProperties) {
    SecureRandomSessionIdGenerator generator = new SecureRandomSessionIdGenerator();
    Session session = serverProperties.getSession();
    generator.setLength(session.getSessionIdLength());
    return generator;
}
Also used : SecureRandomSessionIdGenerator(cn.taketoday.web.session.SecureRandomSessionIdGenerator) Role(cn.taketoday.context.annotation.Role) ConditionalOnMissingBean(cn.taketoday.context.condition.ConditionalOnMissingBean) Component(cn.taketoday.lang.Component)

Example 3 with SecureRandomSessionIdGenerator

use of cn.taketoday.web.session.SecureRandomSessionIdGenerator in project today-framework by TAKETODAY.

the class WebApplicationContextUtils method registerWebApplicationScopes.

/**
 * Register web-specific scopes ("request", "session", "globalSession", "application")
 * with the given BeanFactory, as used by the WebServletApplicationContext.
 *
 * @param beanFactory the BeanFactory to configure
 * @param sc the ServletContext that we're running within
 */
public static void registerWebApplicationScopes(ConfigurableBeanFactory beanFactory, @Nullable ServletContext sc) {
    SessionManager sessionManager = BeanFactoryUtils.find(beanFactory, SessionManager.BEAN_NAME, SessionManager.class);
    if (sessionManager == null) {
        sessionManager = new DefaultSessionManager(new InMemorySessionRepository(new SessionEventDispatcher(), new SecureRandomSessionIdGenerator()), null);
    }
    beanFactory.registerScope(WebApplicationContext.SCOPE_REQUEST, new RequestScope());
    beanFactory.registerScope(WebApplicationContext.SCOPE_SESSION, new SessionScope(sessionManager));
    if (sc != null) {
        ServletContextScope appScope = new ServletContextScope(sc);
        beanFactory.registerScope(WebApplicationContext.SCOPE_APPLICATION, appScope);
        // Register as ServletContext attribute, for ContextCleanupListener to detect it.
        sc.setAttribute(ServletContextScope.class.getName(), appScope);
    }
    beanFactory.registerDependency(HttpSession.class, new SessionObjectSupplier());
    beanFactory.registerDependency(ServletRequest.class, new RequestObjectSupplier());
    beanFactory.registerDependency(ServletResponse.class, new ResponseObjectSupplier());
    beanFactory.registerDependency(ServletContext.class, sc);
}
Also used : SessionEventDispatcher(cn.taketoday.web.session.SessionEventDispatcher) SecureRandomSessionIdGenerator(cn.taketoday.web.session.SecureRandomSessionIdGenerator) SessionManager(cn.taketoday.web.session.SessionManager) DefaultSessionManager(cn.taketoday.web.session.DefaultSessionManager) DefaultSessionManager(cn.taketoday.web.session.DefaultSessionManager) InMemorySessionRepository(cn.taketoday.web.session.InMemorySessionRepository)

Aggregations

SecureRandomSessionIdGenerator (cn.taketoday.web.session.SecureRandomSessionIdGenerator)3 DefaultSessionManager (cn.taketoday.web.session.DefaultSessionManager)2 SessionEventDispatcher (cn.taketoday.web.session.SessionEventDispatcher)2 SessionManager (cn.taketoday.web.session.SessionManager)2 Role (cn.taketoday.context.annotation.Role)1 ConditionalOnMissingBean (cn.taketoday.context.condition.ConditionalOnMissingBean)1 Component (cn.taketoday.lang.Component)1 InMemorySessionRepository (cn.taketoday.web.session.InMemorySessionRepository)1 MemSessionRepository (cn.taketoday.web.session.MemSessionRepository)1