Почему у меня проблема с отображением домашней страницы только на tomcat и когда пользователь вошел в систему? - PullRequest
0 голосов
/ 05 апреля 2019

У меня очень простое приложение со страницей входа, домашней страницей.

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

  ...

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.
                authorizeRequests()
                .antMatchers("/h2-console").permitAll()
                .antMatchers("/h2-console/**").permitAll()
                .antMatchers("/h2-console/login.do").permitAll()
                .antMatchers("/login").permitAll()
                .antMatchers("/registration").permitAll()
                .antMatchers("/admin/**").permitAll()
                .anyRequest()
                .authenticated().and().csrf().disable().formLogin()
                .loginPage("/login").failureUrl("/login?error=true")
                .defaultSuccessUrl("/home", true)
                .usernameParameter("email")
                .passwordParameter("password")
                .and().logout()
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                .logoutSuccessUrl("/").and().exceptionHandling()
                .accessDeniedPage("/access-denied");


        http.csrf().disable();
        http.headers().frameOptions().disable();
    }
...
}

и контроллер home / login:

@RequestMapping(value={"/", "/login"}, method = RequestMethod.GET)
    public ModelAndView login(){
        if(isLogged()){
            ModelAndView modelAndView = new ModelAndView();
           ...
            modelAndView.setViewName("home");
            return  modelAndView;
        }else{
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.setViewName("login");
            return modelAndView;
        }
    }
}

Все хорошо. Логин работает! Выйти работает! Отображение домашней страницы работает тоже!

НО: если я нахожусь на странице администратора и я попытаюсь изменить URL-адрес, например host: port / У меня ошибка 404! Это только происходит, когда Я вошел в систему ! а знаешь что? Это происходит только тогда, когда я развертываю военное приложение в Tomcat. Это действительно очень странно. ПОТОМУ ЧТО, если я запускаю приложение без tomcat (просто запустите основное приложение), все в порядке!

Подводя итог:

  • На localhost все нормально
  • У меня проблемы только на tomcat
  • Проблема отображения домашней страницы появляется только тогда, когда пользователь вошел в систему и приложение запущено в tomcat.
  • Если пользователь не вошел в систему, отображение домашней страницы работает очень хорошо. Даже на коте! . Но если пользователь вошел в систему, "/" mapping

Подробнее о применении:

    apply plugin: 'war'
    ...
    buildscript {ext {springBootVersion = '2.1.3.RELEASE'} ... }
    dependencies {
        compile('org.springframework.boot:spring-boot-starter-data-jpa')
        compile("org.springframework.boot:spring-boot-starter-web") ;
        compile("org.springframework.boot:spring-boot-starter-security")
        compile("org.springframework.boot:spring-boot-starter-thymeleaf")
    }

и основное применение:

@SpringBootApplication
public class SpringLauncher extends SpringBootServletInitializer implements CommandLineRunner {

    public static void main(String args[]) {
        SpringApplication app = new SpringApplication(SpringLauncher.class);
        app.run(args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringLauncher.class);
    }


    @Override
    public void run(String... strings) throws JsonProcessingException {
        logger.info("Application is staging up");
    ...
}

Есть идеи? почему отображение "/" не найдено при входе пользователя в систему? И почему это только на tomcat?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...