Я добавил управление сеансами Shiro (на основе Kim's and Leif's webinar) в демонстрационное приложение для демонстрации быстродействующих билетов Vaadin. Когда я делаю перезагрузку браузера в приложении, я возвращаюсь на страницу входа без сеанса. Как/где я могу это предотвратить.Shiro/Vaadin теряет сеанс при перезагрузке страницы
У меня стандартный shiro.ini программы настройки
кнопки Войти обработчик:
signin.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
boolean loginOK = false;
Factory<SecurityManager> factory =
new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager((org.apache.shiro.mgt.SecurityManager)
securityManager);
Subject currentUser = SecurityUtils.getSubject();
//collect user principals and credentials in a gui specific manner
//such as username/password html form, X509 certificate, OpenID, etc.
//We'll use the username/password example here since it is the most common.
UsernamePasswordToken token =
new UsernamePasswordToken(username.getValue(), password.getValue());
//this is all you have to do to support 'remember me' (no config - built in!):
token.setRememberMe(true);
//currentUser.login(token);
try {
logger.log(Level.INFO, "trying login");
currentUser.login(token);
logger.log(Level.INFO, "login done");
//if no exception, that's it, we're done!
} catch (Exception e) {
logger.log(Level.INFO, "exception");
}
if (currentUser.hasRole("schwartz")) {
loginOK = true;
} else {
loginOK = false;
}
if (loginOK) {
signin.removeShortcutListener(enter);
buildMainView();
} else {
if (loginPanel.getComponentCount() > 2) {
// Remove the previous error message
loginPanel.removeComponent(loginPanel.getComponent(2));
}
// Add new error message
Label error = new Label(
"Wrong username or password. <span>Hint: try empty values</span>",
ContentMode.HTML);
error.addStyleName("error");
error.setSizeUndefined();
error.addStyleName("light");
// Add animation
error.addStyleName("v-animate-reveal");
loginPanel.addComponent(error);
username.focus();
}
}
});