Навигация Vaadin

#vaadin #shiro

#vaadin #shiro

Вопрос:

Я использую плагин shiro-vaadin-integration

 @WebServlet(urlPatterns = "/*", name = "Test", asyncSupported = true,
    initParams = @WebInitParam(name = Constants.I18N_PROVIDER,
        value = "com.test.TranslationProvider"))
@VaadinServletConfiguration(productionMode = false)
@Slf4j
public class AppServlet extends VaadinServlet {

  @Override
  protected void servletInitialized() throws ServletException {
    log.info("Init Shiro");
    IniRealm iniRealm = new IniRealm("classpath:shiro.ini");
    DefaultSecurityManager securityManager = new DefaultSecurityManager(iniRealm);
    // SessionDAO sessionDAO = new MemorySessionDAO();
    // ((DefaultSessionManager) securityManager.getSessionManager()).setSessionDAO(sessionDAO);
    // securityManager.setCacheManager(new MemoryConstrainedCacheManager());
    SecurityUtils.setSecurityManager(securityManager);
    log.info("Finish Init Shiro");

    super.servletInitialized();
  }
  

Суть проблемы в том, что после входа в систему. Меня выбрасывает на главную страницу.

 SecurityUtils.getSubject().isAuthenticated()
  

Возвращает значение true.

Далее, при попытке навигации в приложении.

 SecurityUtils.getSubject().isAuthenticated()
  

Возвращает значение false.

Такое ощущение, что сеанс длится пару секунд

shiro.ini

 [main]
authc.loginUrl = /signin
vaadin = org.vaadin.shiro.VaadinNavigationRolesAuthorizationFilter
vaadin.loginUrl = /signin

[users]
admin@admin.com = 1@QWaszx, admin
user = user, user

[roles]
admin = *
user = action1:*

[urls]
/ = anon, vaadin
/signin = anon, vaadin
/signup = anon, vaadin
/forgot-password = anon, vaadin
/reset-password = anon, vaadin
/registration-complete = anon, vaadin
/create-account = anon, vaadin
/payment = anon, vaadin
/environment = authc, vaadin[admin]
/billing = authc, vaadin[admin]
/settings = authc, vaadin[admin]
  

Если мы быстро перейдем по ссылке после авторизации, она пройдет.
И если вы будете ждать, пока приложение не упадет

Комментарии:

1. Какая версия vaadin? Изменяется ли ваш URL, как определено в разделе [urls]?

2. Vaadin 12.0.7 Да, изменение URL с localhost: 8080/ environment на localhost: 8080/billing

3. Я сомневаюсь, что подход, основанный на URL, будет работать. URL-адреса там являются просто именами на основе истории JS в клиенте и используются для навигации как часть состояния. Обычно они не отправляются на сервер для запросов.