登录时任意删除全部 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获取用户ID,然后查询找到ByUserId(返回真实实体) - 从列表中查找匹配的外观并检查实例 - 这避免了代理问题 阻止实例工作
使用简单的过滤器检查是否是相片或 Avatar 创建器
- 删除复杂的代理检测逻辑 - 简单的过滤器找到ById结果 检查是否是AvatarPhoto - 如果不是相片, 默认为 Avatar 创建者 - 简单得多
使用 Hibernate Lazy Initializer 来从代理获取实际实体类
- 进入HibernateProxy的懒惰化器,以获得持久的阶级 - 检查是否是AvatarPhoto 或 Avatar 创建者 - 使用QQ强制初始化 - 这应该正确识别Avatar类型 即使它是一个代理
使用直接投影来确定外观类型而不是反射
- 试铸给AvatarPhoto先强制代理初始化 - 直接在投影后访问获取FileExtension() - 回到阿凡达阿凡达 造物主的铸造,如果相片铸造失败 - 更好的类型检测错误处理
通过抓取调用目标来改进代理类型检测
- 在代理上援引方法确定实际类型时处理分类例外 - 尝试先获取FileExtension(相片),再获取Style(阿凡达创建器) - 更好的Hibernate代理类型检测错误处理
改进模拟类型检测的 Hibernate 代理处理
- 搜索等级和接口以获取FileExtension方法 - 使用反射来检测 AvatarPhoto 与 AvatarAvatar 创建者在失败时 - 在类名检查中添加倒数 - 解决将相片造型人错误地当作"神通造型人"的问题
Fix TypeScript errors: Replace 'any' types with proper interface in MemberListProvider
从寄存器重新装入相机以解决 Hibernate 代理实例
- 从关系中装入的神通实体可能是未成功检查的Hibernate代理 - 从寄存器重新装入相机以获得实际实体类型(相机或相机) - 如果重新装入失败, 使用反射法添加倒置逻辑 - 修正“ 未知的可视化类型” 错误, 导致无效可视化 URL
保证在 HexheadGroup 中缺失时总是创建首字母 SVG
- 如果avatar抓取失败, 添加错误处理回落以创建缩写 SVG - 合并缩写 SVG 创建逻辑 - 确保AvatarSrc永远不会是空字符串
为调试添加详细的日志到 avatar URL 生成
- 生成可视化的 URL 时日志, 创建什么 URL - 失传或URL无效时日志 - 这将有助于确定为何Avatars没有出现在聊天头/聊天箱/成员名单中
在设置为活动后刷新相机列表
- 在将相片设定为活动后, 刷新完整相片列表以获取更新的等效旗 - 从已刷新的列表中查找并设置活动相机 - 确保更改正确持续,并更新页面
Determine active avatar by checking user.getAvatar() instead of RecordState
- Backend now correctly marks which avatar is active by comparing to user.getAvatar() - This ensures the isActive flag in the API response reflects the actual a...
Load active avatar from avatars list on Profile page
- Fetch avatars list and find the one marked as active - Set activeAvatar from the full avatar object in the list (has all details and URL) - Remove redundant a...
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...