2015-05-06 4 views
0

Я работаю над системой, которая позволит пользователям создавать рабочие пространства. После создания рабочего пространства пользователь может войти, указав имя пользователя, пароль и рабочее пространство. И мне нужен jsessionid, сгенерированный после входа в систему, чтобы создать соединение между рабочей областью и jsessionid.Извлечь JSESSIONID в REST после входа в систему

Логин проходит через REST.

@POST 
    @Path("login") 
    @Produces(ContentType.APPLICATION_JSON_CHARSET_UTF_8) 
    public JsonObject login(LoginCredentials loginCredentials) throws UnAuthorizedException { 
     //login logic 
    } 

У меня также есть перехватчик, реализующий ContainerResponseFilter, WriterInterceptor.

@Override 
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext context)throws IOException { 
     //... 
    } 

Как я могу получить генерируемый jsessionid (который я вижу в заголовке ответа)?

ответ

1

Если у вас есть объект запроса HTTP вы можете получить соответствующую сессию. После того, как вы получили сеанс вы можете получить его идентификатор

request.getSession(true).getId()

Передача true в getSession вызывает новый сеанс будет создан, если он еще не существует.

+0

спасибо за подсказку. У меня есть sessionid в функции входа из запроса @Context HttpServletRequest. request.getSession (ложь) .getId(). – Nem

0

В вашем перехватчик вы можете получить запрос приходит на вашу службу и извлечь заголовки или что-нибудь вы положили в запросе (так что ваш JSessionID а):

HttpServletRequest request = (HttpServletRequest) message 
      .getExchange().getInMessage() 
      .get(AbstractHTTPDestination.HTTP_REQUEST); 
1

Предполагая, что вы используете Джерси для служб REST, вы можете использовать, например.

в ваших подписях метода обслуживания, чтобы получить доступ к заголовкам ответа. Посмотрите на https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2742 и Under what conditions is a JSESSIONID created? (это один о JSessionID)

+0

Спасибо за подсказку. Я использовал ваши и @DaveHowes советы, чтобы придумать решение. – Nem

 Смежные вопросы

  • Нет связанных вопросов^_^