diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..0fa0509 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..63e9001 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..f0f8287 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/com/tanqidi/survey/config/OAuth2LoginSecurityConfig.java b/src/main/java/com/tanqidi/survey/config/OAuth2LoginSecurityConfig.java index 40fd8c9..6f6ddba 100644 --- a/src/main/java/com/tanqidi/survey/config/OAuth2LoginSecurityConfig.java +++ b/src/main/java/com/tanqidi/survey/config/OAuth2LoginSecurityConfig.java @@ -56,13 +56,17 @@ public class OAuth2LoginSecurityConfig { .oauth2Login(oauth2 -> oauth2 // .userInfoEndpoint(userInfo -> userInfo // .oidcUserService(this.oidcUserService()))) - .csrf(csrf -> csrf // - // https://docs.spring.io/spring-security/reference/servlet/exploits/csrf.html#csrf-token-repository-cookie + .csrf(csrf -> csrf .ignoringRequestMatchers("/logout", "/api")) - .logout(logout -> logout // - .addLogoutHandler(new KeycloakLogoutHandler(restTemplateBuilder.build())) // - // https://docs.spring.io/spring-security/reference/servlet/authentication/logout.html#clear-all-site-data - .addLogoutHandler(new HeaderWriterLogoutHandler(new ClearSiteDataHeaderWriter(Directive.ALL)))); + .logout(logout -> logout + .addLogoutHandler(new KeycloakLogoutHandler(restTemplateBuilder.build())) + .addLogoutHandler(new HeaderWriterLogoutHandler(new ClearSiteDataHeaderWriter(Directive.ALL)))) + .exceptionHandling(handling -> handling + .accessDeniedHandler((request, response, exception) -> { + response.setContentType("application/json;charset=UTF-8"); + response.setStatus(HttpServletResponse.SC_FORBIDDEN); + response.getWriter().write("{\"code\":403,\"message\":\"没有权限访问该资源\",\"data\":null}"); + })); return http.build(); }