为记忆添加日志Me值和类型转换
- 添加类型转换以提醒我处理字符串/布尔/数字 - 添加详细记录以追踪饼干设置逻辑 - 日志记住我值和类型以调试 cookie 设置问题
为 USERNAME 和 REMBER ME cookie 操作添加全面的日志
- 在页面上添加详细记录饼干读取 - 添加日志以验证 cookie 在登录响应后设置 - 在登录 API 中添加 Set- Cookie 页眉记录 - 在页面上记录全部 cookie 供调试
更新隐藏用户名字段以使用窗体Key来重新挂载
- 将密钥添加到隐藏用户名输入中, 以强制在登录后重新挂载 - 确保所有用户名相关字段在登录后完全新鲜
登录后强制格式重挂载以防止浏览器自动填充
- 添加窗体Key状态,在登录后更改为强制组件重挂 - 更改文本字段键以包含窗体Key - 更改动作. div 键以包含窗体Key - 与随机化的字段名称和自动完成=关闭合并,以充分防止浏览器自动填充 - 确保用户名字段在登录后完全新鲜
使用随机化的字段名称防止浏览器自动填充识别
- 生成每个页面加载用户名字段名称的随机后缀 - 防止浏览器在页面负载中识别同一字段 - 与自动完成=关闭和状态清除合并,以充分防止旧用户名自动填充
阻止浏览器在登录后自动填充以恢复旧用户名
- 在用户名字段上将自动完成从“用户名”改为“关闭” - 将表格自动完成从“上”改为“下” - 登录时清除用户名和密码状态 - 防止浏览器在用户点击后自动填充上一个用户名 - 确保登录后的新登录表单
登录时任意删除全部 cookie
- 删除 Kamo-login 登录页面上的所有 cookie( 客户端) - 删除 Kamo-login 登录 API (服务器侧) 上的所有 cookie - 清除局部积分和会话积分 - 删除所有域/路径组合的饼干 - 确保两个域在登录后完全没有饼干
Delete ALL cookies indiscriminately during logout
- Delete all cookies on kamo-internal logout page (client-side) - Delete all cookies on kamo-internal logout API (server-side) - Clear localStorage and sessionS...
Invalidate existing session before validating OTK
- Check for existing *** cookie in validate request - Clear and delete any existing session before validating OTK - Verify session data is not empty JSON (clear...
Invalidate existing session before creating new one during login
- Check for existing *** cookie in login request - Delete/invalidate existing session before creating new one - Prevents reusing old session cookies when loggin...
Disable activity tracking and session extension during logout
- Add disableClientActivityTracker() function to stop activity tracking - Stop session monitor when logout is initiated - Prevent screen movement/activity from ...
删除结束点中的密钥前先清除会话数据
- 删除密钥前将会话数据设为空 JSON - 确保会话无法使用,即使删除失败或复制滞后 - 如果删除失败, 则添加倒计时处理错误以清除数据 - 改进记录,以显示会议数据是否已清除 - 修复导入以使用静态导入来获取RedisReadClient
Clear session data before deleting key in logout endpoint
- Set session data to empty JSON before deleting the key - Ensures session is unusable even if deletion fails or there's replication lag - Add error handling wi...
Clear session data before deleting key to ensure session is unusable
- Set session data to empty JSON ({}) before deleting the key - Ensures session is unusable even if deletion fails or there's replication lag - Add error handli...
Improve logout cookie clearing - clear cookies across all domain/path combinations
- Clear cookies with base domain (e.g., .kamocrm.com) to cover all subdomains - Clear cookies for current hostname without domain attribute - Clear cookies unre...
Fix Redis import in logout route - use static import for getRedisReadClient
Clear existing *** cookies before setting new one during validate
- Clear all possible *** cookie variations before setting new cookie - Prevents reusing old session cookies from previous logins - Ensures validate always uses ...
Add verification logging to confirm Redis session is deleted during logout
在登录时设置新 cookie 之前先清除已有的 *** cookie
- 清除所有可能的*** cookie 变量( 基准域、 主机名、 无域) - 防止重复使用以往登录的旧会话 cookie - 确保新登录总是使用新创建的会话 - 解决在登录后与账户A进行登录仍使用账户B会话的问题
修复登录: 呼叫安全服务登录结束点以完全取消会话
- 在 Java 后端调用安全服务/ api/ security/ logout 以适当取消会话 - 确保删除会话,删除 CSRF 令牌,并充分清理会话 - 防止在登录后使用不同账户进行登录的问题。 - 保持Redis清理作为备份,以防安全服务呼叫失败
Fix logout: call SecurityService logout endpoint to fully invalidate session
- Call SecurityService /api/security/logout to properly invalidate session on Java backend - This ensures session is deleted, CSRF tokens are removed, and sessi...
修正登录流程: 清除 cookie 但仍尝试自动登录
- 删除跳过AutoLogin逻辑(自动登录应始终有效) - 添加清晰的 Cookies 参数到登录方向 - 登录页面清除 cookie 当 cookies= truth 清除时, 然后尝试自动登录 - 自动登录自会话结束后自然会失败 - 自动登录仍然对有有效会话的用户正常工作
修正登录问题: 登录后防止自动登录
- 添加跳过AutoLogin查询参数以登录重定向 - 跳过 AutoLogin= true 时跳过自动登录检查 - 登录时加强饼干清理(多个域/路径组合) - 客户端饼干清理作为服务器端清理的备份 这使得用户无法在登录出账后自动登录上一个账户.
Replace PersonIcon with user avatar in NavTop My Account link
- Fetch member avatar using fetchMemberAvatar utility - Display Avatar component with user's image or initials fallback - Matches design pattern used in other c...
向 Avatar 实体添加可简单类型检查的可视化 Type 字段
- 添加 TYPE 列以存储“ 相片” 或“ Avatar 创建器 ” - 删除与伦博克相冲突的重复构造器@ NoArgsConstructionctor - 在控制器中创建相机时设置相机Type
使用avatarType 字段而不是复杂的代理检测
- 直接检查 AvatarType 字段以进行简单的类型检查 - 创建新相机时设置相机Type - 更简单、更能发挥作用
向 Avatar 实体添加可简单类型检查的可视化 Type 字段
- 添加 TYPE 列以存储“ 相片” 或“ Avatar 创建器 ” - 自动设置在构造器中 - 避免例如检查和代理问题
使用简单的过滤器检查是否是相片或 Avatar 创建器
- 删除复杂的代理检测逻辑 - 简单的过滤器找到ById结果 检查是否是AvatarPhoto - 如果不是相片, 默认为 Avatar 创建者 - 简单得多
Fix TypeScript errors: Replace 'any' types with proper interface in MemberListProvider
为调试添加详细的日志到 avatar URL 生成
- 生成可视化的 URL 时日志, 创建什么 URL - 失传或URL无效时日志 - 这将有助于确定为何Avatars没有出现在聊天头/聊天箱/成员名单中
Fix avatar not displaying on Profile page after refresh
- Ensure avatar URL from member profile is preserved when setting activeAvatar - Update profileData with avatar URL when avatar is loaded - Preserve URL in sync...
Add detailed logging for avatar selection debugging
- Log full avatar object when handleSelectAvatar is called - Add validation for avatar.id before processing - Log API URL being called - Better error messages f...
Fix TypeScript type error - handle null body in apiProxy
- Convert null to undefined for BodyInit type compatibility - Fixes: Type 'null' is not assignable to type 'BodyInit | undefined'
Fix PUT request body handling for set-active endpoint
- Explicitly set body to undefined for PUT requests without body - Improve body handling in apiProxy to gracefully handle empty requests - Prevents body consump...
Improve error handling for set-active avatar endpoint
- Forward actual backend error messages instead of generic message - Better error parsing in frontend (handle both JSON and text responses) - Enhanced logging t...
Use static imports instead of dynamic imports for avatarUtils
- Replace dynamic imports with static imports at top of file - Avoids module resolution issues with TypeScript moduleResolution node16 - Functions are always ne...
Revert to relative paths for dynamic imports - Next.js may not resolve path aliases in dynamic imports at build time
Fix path alias - use @/lib/avatarUtils instead of @/app/lib/avatarUtils
- @/ maps to project root, so @/lib/avatarUtils is correct path - @/app/lib/avatarUtils was incorrect (would look for app/app/lib/avatarUtils)
Fix dynamic imports - use path alias @/app/lib/avatarUtils for Next.js webpack resolution
- Change relative paths to path alias @/app/lib/avatarUtils - Next.js webpack can't resolve .js extensions for .ts files in dynamic imports - Path aliases work ...
Fix TypeScript ESM dynamic imports - add .js extension required for node16/nodenext module resolution
- TypeScript with moduleResolution node16/nodenext requires explicit .js extensions in dynamic imports - TypeScript will resolve .js imports to .ts files at bui...