質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.32%

springsecurityの認証時に404エラー

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,273

matsuda2

score 24

前提・実現したいこと

現在、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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.32%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る