From f61e96c11098ad78cafb78d16f3f36cb8cefcf77 Mon Sep 17 00:00:00 2001
From: zhongrijian <646384940@qq.com>
Date: Sat, 01 Jun 2024 09:46:41 +0800
Subject: [PATCH] oauth 认证成功失败处理配置
---
blade-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java | 11 +++--
blade-auth/src/main/java/org/springblade/auth/config/SecurityConfiguration.java | 11 +++++
blade-auth/src/main/java/org/springblade/auth/endpoint/BladeTokenEndPoint.java | 4 --
blade-auth/src/main/java/org/springblade/auth/config/CustomAuthenticationSuccessHandler.java | 41 ++++++++++++++++++++
blade-auth/src/main/java/org/springblade/auth/config/CustomAuthenticationEntryPoint.java | 25 ++++++++++++
5 files changed, 83 insertions(+), 9 deletions(-)
diff --git a/blade-auth/src/main/java/org/springblade/auth/config/CustomAuthenticationEntryPoint.java b/blade-auth/src/main/java/org/springblade/auth/config/CustomAuthenticationEntryPoint.java
new file mode 100644
index 0000000..4caff40
--- /dev/null
+++ b/blade-auth/src/main/java/org/springblade/auth/config/CustomAuthenticationEntryPoint.java
@@ -0,0 +1,25 @@
+package org.springblade.auth.config;
+
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint;
+import org.springframework.security.core.AuthenticationException;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+
+public class CustomAuthenticationEntryPoint extends LoginUrlAuthenticationEntryPoint {
+
+ public CustomAuthenticationEntryPoint(String loginFormUrl) {
+ super(loginFormUrl);
+ }
+
+ @Override
+ public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
+ String queryString = request.getQueryString();
+ String query = !Strings.isBlank(queryString)?"?"+queryString:"";
+ String redirectUrl = getLoginFormUrl() + query;
+ response.sendRedirect(redirectUrl);
+ }
+}
diff --git a/blade-auth/src/main/java/org/springblade/auth/config/CustomAuthenticationSuccessHandler.java b/blade-auth/src/main/java/org/springblade/auth/config/CustomAuthenticationSuccessHandler.java
new file mode 100644
index 0000000..8be99a0
--- /dev/null
+++ b/blade-auth/src/main/java/org/springblade/auth/config/CustomAuthenticationSuccessHandler.java
@@ -0,0 +1,41 @@
+package org.springblade.auth.config;
+
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Map;
+
+public class CustomAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
+
+ private String redirectUrl;
+
+ public CustomAuthenticationSuccessHandler(String redirectUrl) {
+ this.redirectUrl = redirectUrl;
+ }
+
+ @Override
+ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException {
+// String requestURI = request.getRequestURI();
+ Map<String, String[]> parameterMap = request.getParameterMap();
+ StringBuilder builder = new StringBuilder();
+ if (parameterMap.size()>0){
+ builder.append("?");
+ }
+ String client_id = request.getHeader("client_id");
+ String response_type = request.getHeader("response_type");
+ String redirect_uri = request.getHeader("redirect_uri");
+ // 拼接
+ if (!Strings.isBlank(client_id)){
+ builder.append("client_id=").append(client_id)
+ .append("&")
+ .append("response_type=").append(response_type)
+ .append("&")
+ .append("redirect_uri=").append(redirect_uri);
+ }
+ // 跳转
+ response.sendRedirect(redirectUrl + builder.toString());
+ }
+}
diff --git a/blade-auth/src/main/java/org/springblade/auth/config/SecurityConfiguration.java b/blade-auth/src/main/java/org/springblade/auth/config/SecurityConfiguration.java
index 6289dd8..b027723 100644
--- a/blade-auth/src/main/java/org/springblade/auth/config/SecurityConfiguration.java
+++ b/blade-auth/src/main/java/org/springblade/auth/config/SecurityConfiguration.java
@@ -55,7 +55,16 @@
protected void configure(HttpSecurity http) {
http.headers().frameOptions().disable();
http.csrf().disable();
- http.formLogin().loginPage("/oauth/login").loginProcessingUrl("/oauth/form");
+ http.formLogin()
+ //自定义认证成功跳转
+ .successHandler(new CustomAuthenticationSuccessHandler("http://192.168.1.50:1888/api/oauth/authorize"))
+ .loginPage("http://192.168.1.50:1888/#/login")
+// .loginPage("/oauth/login")
+ .loginProcessingUrl("/oauth/form");
+ // 认证失败自定义登录页跳转
+ http.exceptionHandling()
+ .authenticationEntryPoint(new CustomAuthenticationEntryPoint("http://192.168.1.50:1888/#/login"));
+
}
@Override
diff --git a/blade-auth/src/main/java/org/springblade/auth/endpoint/BladeTokenEndPoint.java b/blade-auth/src/main/java/org/springblade/auth/endpoint/BladeTokenEndPoint.java
index bb02747..64cef10 100644
--- a/blade-auth/src/main/java/org/springblade/auth/endpoint/BladeTokenEndPoint.java
+++ b/blade-auth/src/main/java/org/springblade/auth/endpoint/BladeTokenEndPoint.java
@@ -18,7 +18,6 @@
import com.wf.captcha.SpecCaptcha;
import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.cache.CacheNames;
import org.springblade.core.cache.utils.CacheUtil;
@@ -43,11 +42,8 @@
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.time.Duration;
-
import static org.springblade.core.cache.constant.CacheConstant.*;
/**
diff --git a/blade-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java b/blade-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java
index 6b746ef..256c94e 100644
--- a/blade-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java
+++ b/blade-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java
@@ -37,13 +37,16 @@
Properties props = System.getProperties();
// 通用注册
PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.enabled", "false");
- PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile));
- PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile));
- PropsUtil.setProperty(props, "spring.cloud.nacos.username", LauncherConstant.NACOS_USERNAME);
- PropsUtil.setProperty(props, "spring.cloud.nacos.password", LauncherConstant.NACOS_PASSWORD);
+// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile));
+// PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile));
+// PropsUtil.setProperty(props, "spring.cloud.nacos.username", LauncherConstant.NACOS_USERNAME);
+// PropsUtil.setProperty(props, "spring.cloud.nacos.password", LauncherConstant.NACOS_PASSWORD);
// PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile));
// PropsUtil.setProperty(props, "spring.zipkin.base-url", LauncherConstant.zipkinAddr(profile));
+ // 多数据源
PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "false");
+ // 开启鉴权
+// PropsUtil.setProperty(props, "blade.secure.enabled", "true");
// 开启elk日志
// PropsUtil.setProperty(props, "blade.log.elk.destination", LauncherConstant.elkAddr(profile));
--
Gitblit v1.9.3