前提・実現したいこと
現在、SpringBoot(バージョン2.1.4.RELEASE)でSpringSecurityを使用したwebアプリを作成しています。
最初にログインページを表示し、認証成功時に2ページ目(top)に遷移する予定でした。
ローカルPCでtomcatとアプリを起動し、ブラウザからurlを入力するとログインページを表示し、topページに遷移します。
その時のログが以下となります。
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
このアプリのwarを生成し、linuxサーバ(tomcat8を稼働)にデプロイし、実行するとログインページが表示されるので認証情報を入力しokをクリックすると、次ページに遷移せずにエラーを表示します。
xxxはサーバのディレクトリ名であり、httpd.confで指定したurlではないです。
springのapllication.propertiesにコンテキストルートの指定をしましたが、状況はかわりません。
疑問は以下です。
疑問1.なぜ404エラーにコンテキストルートでなくlinuxサーバでの配置ディレクトリを表示するか?
疑問2.なぜ404エラーにtopページでなく、loginページがないと表示するか?
疑問3.なぜloginページで認証入力しokをクリックするとgetメソッドのログを出力しないか?
サーバにSpringBootのwebアプリをデプロイする際に必要な設定などがあれば教えていただきたいです。
発生している問題・エラーメッセージ
<ログ>
2019/09/04 04:24:00 INFO [ajp-nio-8009-exec-1] [] - Completed initialization in 28 ms
<エラーメッセージ>
404 Not Found
The requested URL /xxx/login was not found on this server.
該当のソースコード
<セキュリティアダプタ>
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");
;
}
<2ページ目コントローラー>
@Controller
public class TopController {
@RequestMapping(value = {"/"}, method = RequestMethod.GET)
public String index(Model model) {
return "top";
}
}
試したこと
補足情報(FW/ツールのバージョンなど)
SpringBoot:2.1.4
tomcat:8
java:1.8
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.32%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる