Создание сеанса с использованием JSESSIONID и Redis в Springboot - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть приложение A, A - это обычное приложение Spring (не Springboot), и для управления сеансом используется внешнее redis (с использованием jedis).Когда я вхожу, используя A, создается ключ со значением JSESSIONID, а его значение содержит сеанс.

Теперь я создал другое приложение с пружинной загрузкой B, в котором я пытаюсь использовать то же самоесеанс, созданный приложением A.

Я передаю файл cookie JSESSION в запросе, но приложение не может выбрать сеанс из Redis, даже если мое соединение Redis работает нормально, и я могучтобы получить доступ ко всем значениям ключа, созданным приложением A в приложении B, используя режим отладки.

Мой код:

@Configuration
@EnableResourceServer
public class ResourceConfig extends ResourceServerConfigurerAdapter {

    @Autowired
    private TokenStore tokenStore;
    @Autowired
    private OAuth2WebSecurityExpressionHandler expressionHandler;
    @Autowired
    private Http401UnauthorizedEntryPoint http401UnauthorizedEntryPoint;

    @Override
    public void configure(HttpSecurity httpSecurity) throws Exception {

        httpSecurity
                .authorizeRequests().anyRequest().authenticated()
                .antMatchers("/**/userData/**")
                .access("@roleCheckService.hasRole(request,'ROLE_USER')").and().httpBasic();
    }

    @Bean
    public TokenStore tokenStore() {
        return new RedisLimitedTokenStore();
    }
}

И мой конфиг jedis выглядит как

@Configuration
@EnableRedisHttpSession
@Order(Ordered.HIGHEST_PRECEDENCE)
public class SessionConfig extends AbstractHttpSessionApplicationInitializer {


    @Bean
    public JedisConnectionFactory connectionFactory() {
        JedisConnectionFactory jedisConFactory
                = new JedisConnectionFactory();
        jedisConFactory.setHostName("localhost");
        jedisConFactory.setPort(6379);
        jedisConFactory.setPassword("my_password_123");
        return jedisConFactory;
    }
}

Как мне сказать весеннему приложению B выбрать сеанс из redis, используя JSESSIONID, который я передаю в запросе.

Пожалуйста, укажите.

...