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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

4902閲覧

springsecurityの認証時に404エラー

matsuda2

総合スコア29

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2019/09/04 06:12

編集2019/09/10 01:23

前提・実現したいこと

現在、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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

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

投稿2019/09/12 07:20

matsuda2

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問