对话逻辑修复

This commit is contained in:
2025-07-25 17:48:02 +08:00
parent a4c6140ed5
commit f576de68da
31 changed files with 2129 additions and 588 deletions
@@ -52,9 +52,11 @@ public class AuthInterceptor implements HandlerInterceptor {
return false;
}
// 将用户ID存储到请求属性中,供后续使用
// 将用户信息存储到请求属性中,供后续使用
String userId = authService.getUserIdFromToken(token);
String username = authService.getUsernameFromToken(token);
request.setAttribute("userId", userId);
request.setAttribute("username", username);
request.setAttribute("token", token);
return true;
@@ -71,58 +71,70 @@ public class UserContextInterceptor implements HandlerInterceptor {
/**
* 从请求中获取用户ID
*
*
* @param request HTTP请求
* @return 用户ID
*/
private String getUserIdFromRequest(HttpServletRequest request) {
// 1. 从请求头获取
// 1. 优先从请求属性获取(AuthInterceptor设置的)
Object userIdAttr = request.getAttribute("userId");
if (userIdAttr != null && StringUtils.hasText(userIdAttr.toString())) {
return userIdAttr.toString();
}
// 2. 从请求头获取
String userId = request.getHeader("X-User-Id");
if (StringUtils.hasText(userId)) {
return userId;
}
// 2. 从请求参数获取
// 3. 从请求参数获取
userId = request.getParameter("userId");
if (StringUtils.hasText(userId)) {
return userId;
}
// 3. 从Session获取
// 4. 从Session获取
Object sessionUserId = request.getSession().getAttribute("userId");
if (sessionUserId != null) {
return sessionUserId.toString();
}
// 4. 生成访客ID
// 5. 生成访客ID
return "guest_" + System.currentTimeMillis();
}
/**
* 从请求中获取用户名
*
*
* @param request HTTP请求
* @return 用户名
*/
private String getUsernameFromRequest(HttpServletRequest request) {
// 1. 从请求头获取
// 1. 优先从请求属性获取(AuthInterceptor设置的)
Object usernameAttr = request.getAttribute("username");
if (usernameAttr != null && StringUtils.hasText(usernameAttr.toString())) {
return usernameAttr.toString();
}
// 2. 从请求头获取
String username = request.getHeader("X-Username");
if (StringUtils.hasText(username)) {
return username;
}
// 2. 从请求参数获取
// 3. 从请求参数获取
username = request.getParameter("username");
if (StringUtils.hasText(username)) {
return username;
}
// 3. 从Session获取
// 4. 从Session获取
Object sessionUsername = request.getSession().getAttribute("username");
if (sessionUsername != null) {
return sessionUsername.toString();
}
return "guest";
}