2016-08-02 5 views
0

Я подключаюсь к моему сервису отдыха, используя Джерси и JAX-RS в своем приложении Java webstart. Когда пользователь меняет свой пароль с помощью моего приложения webstart, я затем сбрасываю WebTarget с новым HttpBasicAuthFilter с новым паролем ... однако новый пароль не используется !!! Я запустил тот же код локально вне Java webstart (с java вместо javaws), и он отлично работает. Вот код проблема:Как установить новый пароль с jax-rs при запуске под Java-webstart?

public WebTarget getWebTarget(String username, String password) { 
    Client client = ClientBuilder.newBuilder().sslContext(SSLContext.getDefault()).build(); 
    client.register(new HttpBasicAuthFilter(username, password)); 
    WebTarget targetBase = client.target("localhost"); 
    return targetBase; 
} 

Пароль выше, не изменит, лежащий в основе пароля, который используется, когда WebTarget используется что-то вроде request().get(). Я знаю, что код работает, потому что, если я запускаю с java вместо javaws ... он работает! Таким образом, проблема заключается в веб-старте java, который, похоже, кэширует пароль.

Как я могу получить новый WebTarget на тот же адрес/хост с другим паролем и тем же именем?

ответ

0

Проблема не в веб-старте Java, как таковой. Проблема в том, что веб-сайт Java поддерживает файлы cookie и, следовательно, данные сеанса. Служба на сервере является Grails и хранит, что пользователь был аутентифицирован в cookie сеанса ... и поэтому, пока этот файл cookie действителен, бэкэнд будет работать, и новые пароли просто игнорируются.