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();
}