|
|
@@ -185,23 +185,34 @@ public class WebLoginController {
|
|
|
* 构建并设置Cookie(统一登录和登出的Cookie逻辑)
|
|
|
*/
|
|
|
private void buildCookie(HttpServletRequest request, HttpServletResponse response, String token, long maxAgeSeconds) {
|
|
|
- // 判断是否为HTTPS(考虑代理场景,检查X-Forwarded-Proto头)
|
|
|
- boolean isHttps = isHttpsRequest(request);
|
|
|
- String sameSiteVal = isHttps ? "None" : "Lax";
|
|
|
-
|
|
|
- ResponseCookie.ResponseCookieBuilder cookieBuilder = ResponseCookie.from("access_token", token)
|
|
|
+// boolean isHttps = isHttpsRequest(request);
|
|
|
+// String sameSiteVal = isHttps ? "None" : "Lax";
|
|
|
+// boolean isLocal = isLocalEnvironment(request);
|
|
|
+//
|
|
|
+// // 基础Cookie(不带domain)
|
|
|
+// ResponseCookie baseCookie = ResponseCookie.from("access_token", token)
|
|
|
+// .path("/").maxAge(maxAgeSeconds).httpOnly(true).secure(isHttps).sameSite(sameSiteVal).build();
|
|
|
+// response.addHeader(HttpHeaders.SET_COOKIE, baseCookie.toString());
|
|
|
+//
|
|
|
+// // 线上环境:带点域名的Cookie(ResponseCookie支持)
|
|
|
+// if (!isLocal) {
|
|
|
+// ResponseCookie dotCookie = ResponseCookie.from("access_token", token)
|
|
|
+// .path("/").maxAge(maxAgeSeconds).httpOnly(true).secure(isHttps).sameSite(sameSiteVal)
|
|
|
+// .domain(".learn-ai.com.cn").build();
|
|
|
+// response.addHeader(HttpHeaders.SET_COOKIE, dotCookie.toString());
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ ResponseCookie cookie = ResponseCookie.from("access_token", token)
|
|
|
+ .domain(".learn-ai.com.cn")
|
|
|
.path("/")
|
|
|
- .maxAge(maxAgeSeconds)
|
|
|
.httpOnly(true)
|
|
|
- .secure(isHttps)
|
|
|
- .sameSite(sameSiteVal);
|
|
|
-
|
|
|
- // 判断是否为本地环境:检查Origin、Host、RemoteAddr
|
|
|
- if (!isLocalEnvironment(request)) {
|
|
|
- cookieBuilder.domain(".learn-ai.com.cn");
|
|
|
- }
|
|
|
-
|
|
|
- response.addHeader(HttpHeaders.SET_COOKIE, cookieBuilder.build().toString());
|
|
|
+ .secure(true)
|
|
|
+ .sameSite("Lax")
|
|
|
+ .maxAge(maxAgeSeconds)
|
|
|
+ .build();
|
|
|
+ response.addHeader(HttpHeaders.SET_COOKIE, cookie.toString());
|
|
|
}
|
|
|
|
|
|
/**
|