前提・実現したいこと
Spring BootとSpring Securityで、Discord OAuth2を用いてログインできるシステムを作成しています。
発生している問題・エラーメッセージ
処理中に別の画面を表示する方法がわかりません。
背景としては、Discord OAuth2ではOAuth2の処理の間( Spring側のloadUserなどの処理 )の間Discordの認証画面が出たままになります。
認証がうまくできていないと思ってもう一度クリックしてしまうと、重複したリクエストとしてエラーが出てしまいます。
そこで、/login/oauth2/code/discord?token=???
にリクエストが投げられた際に、「処理中です」というような画面を表示してからログイン処理を行うようにしたいです。
該当のソースコード
Java
1 @Override 2 protected void configure(HttpSecurity http) throws Exception { 3 http.authorizeRequests() 4 .antMatchers("/dashboard").authenticated() 5 .anyRequest().permitAll() 6 .and() 7 .oauth2Login() 8 .defaultSuccessUrl("/dashboard", true) 9 .tokenEndpoint() 10 .accessTokenResponseClient(new RestOAuth2AccessTokenResponseClient(restOperations)) 11 .and() 12 .userInfoEndpoint().userService(userService) 13 .and() 14 .and() 15 .logout() 16 .logoutRequestMatcher(new AntPathRequestMatcher("/logout")) 17 .logoutUrl("/logout") 18 .invalidateHttpSession(true) 19 .logoutSuccessUrl("/home?logout_success") 20 .and() 21 .sessionManagement() 22 .maximumSessions(1) 23 .expiredUrl("/session_expire"); 24 25 }
試したこと
configureのOAuth2LoginConfigurer.loginProcessingUrl
(標準では/login/oauth2/code/discord
)を/processing
に設定し、ControllerとMvcConfigurerでresources/tempaltes/processing.html
が表示されるようにしてみましたが、変わりませんでした。
(Callback先はちゃんと変わっていましたが、loadUserなどの処理の間もDiscordの画面のままでした)
補足情報(FW/ツールのバージョンなど)
gradle
1dependencies { 2 // Security 3 implementation 'org.springframework.boot:spring-boot-starter-security:2.6.2' // Spring Security 4 implementation 'org.springframework.session:spring-session-core:2.6.1' /// Spring Session 5 implementation 'org.springframework.boot:spring-boot-starter-oauth2-client:2.6.2' // Spring OAuth2 Client 6 implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.0.4.RELEASE' // Thymeleaf Spring Security 7 8 // Web 9 implementation 'org.springframework.boot:spring-boot-starter-web:2.6.2' // Spring Web 10 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:2.6.2' // Thymeleaf 11 implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.0.0' // Thymeleaf layout 12 runtimeOnly 'org.springframework.boot:spring-boot-devtools:2.6.2' // Spring DevTools 13 14 // Test 15 testImplementation 'org.springframework.boot:spring-boot-starter-test:2.6.2' 16 testImplementation 'org.springframework.security:spring-security-test:5.5.1' 17}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。