

現在、SpringBoot(バージョン2.1.4.RELEASE)でSpringSecurityを使用したwebアプリを作成しています。最初にログインページを表示し、認証成功時に2ページ目(top)に遷移する予定でした。

ローカルPCでtomcatとアプリを起動し、ブラウザからurlを入力するとログインページを表示し、ページ遷移します。その時のログが以下となります。

[code]

    2019-09-04 13:36:45.344  INFO 216 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 15 ms
    2019-09-04 13:36:50.503  INFO 216 --- [nio-8080-exec-5] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory
    2019-09-04 13:36:50.950 DEBUG 216 --- [nio-8080-exec-8] o.s.web.servlet.DispatcherServlet        : GET "/xxx/", parameters={}
    2019-09-04 13:36:50.956 DEBUG 216 --- [nio-8080-exec-8] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public java.lang.String yyy.TopController.index(org.springframework.ui.Model)
    2019-09-04 13:36:50.992 DEBUG 216 --- [nio-8080-exec-8] o.s.w.s.v.ContentNegotiatingViewResolver : Selected 'text/html' given [text/html, application/xhtml+xml, image/webp, image/apng, application/signed-exchange;v=b3, application/xml;q=0.9, */*;q=0.8]
    2019-09-04 13:36:51.299 DEBUG 216 --- [nio-8080-exec-8] o.s.web.servlet.DispatcherServlet        : Completed 200 OK
    
[/code]

このアプリのwarを生成し、linuxサーバ(tomcat8を稼働)にデプロイし、実行するとログインページが表示されるので認証情報を入力しokをクリックすると、次ページに遷移せずにエラーを表示します。

サーバのアプリのログは以下のとおりです。

[code]

    2019/09/04 04:24:00 INFO  [ajp-nio-8009-exec-1]  []  - Completed initialization in 28 ms
    
[/code]

エラーメッセージは以下のとおりです。

[code]

    404 Not Found
    The requested URL /xxx/login was not found on this server.
    
[/code]

ローカルPCのようなGETのログが出力されず、次ページに遷移できません。  
サーバにSpringBootのwebアプリをデプロイする際に必要な設定などがあれば教えていただきたいです。

ソースは以下のとおりとなります。  
**< セキュリティアダプタ>**

[code]

    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
          protected void configure(HttpSecurity http) throws Exception {
            http
                .authorizeRequests()
                    // loginはアクセスを許可
                    .antMatchers("/login").permitAll()
                    .anyRequest().authenticated()
                .and()
                .formLogin() //
                    .loginProcessingUrl("/login")
                    .loginPage("/login").usernameParameter("user").passwordParameter("password") // ログインページ
                    .defaultSuccessUrl("/top", true) //認証成功時の遷移先ページ
                    .failureUrl("?error")
                    .permitAll()
                .and()
                .logout()
                    .logoutRequestMatcher(new AntPathRequestMatcher("/logout**"))       // ログアウト処理のパス
                    .logoutSuccessUrl("/login")
                    // ログアウト時に削除するクッキー名
                    .deleteCookies("JSESSIONID")
                    // ログアウト時のセッション破棄を有効化
                    .invalidateHttpSession(true)
                    .permitAll()
                .and()
                .sessionManagement()
                    // セッションが無効な時の遷移先
                    .invalidSessionUrl("/login");
            ;
          }
    
[/code]

**< 2ページ目>**

[code]

    @Controller
    public class TopController {
        @RequestMapping(value = {"/"}, method = RequestMethod.GET)
        public String index(Model model) {
            return "top";
        }
    }
    
[/code]

よろしくお願いします。


CC BY-SA 4.0
2019-09-04T05:25:03.953
57831
2022-04-14T05:01:25.150
2019-09-04T05:44:34.603
32986
35719
question
spring-boot
springboot + tomcatのページ遷移ができない


tomcatの設定でwarのフォルダ名と同じurlを設定して解決しました。


CC BY-SA 4.0
2019-09-12T07:27:48.627
59012
2019-09-12T07:27:48.627
35720
57831
answer