ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

TradingAgents-CN 用户认证与管理完全指南:基于 users.json 的角色权限体系与安全运维实战

2026/9/12 13:58:05 拓冰建站 浏览量
TradingAgents-CN 用户认证与管理完全指南:基于 users.json 的角色权限体系与安全运维实战 TradingAgents-CN 用户认证与管理完全指南基于 users.json 的角色权限体系与安全运维实战【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CNTradingAgents-CN 的 Web 端采用了一套轻量、基于文件的用户认证系统所有用户信息集中存放在web/config/users.json中配合 SHA-256 密码哈希、会话超时、权限分级与登录日志实现从登录到鉴权的完整闭环。本指南将完整讲解该认证体系的架构、用户配置结构、角色权限模型、安全机制并给出手动编辑与命令行工具两种用户管理方案帮助你快速完成部署后的账户初始化、团队账号管理与安全加固。认证架构总览文件即用户数据库TradingAgents-CN Web 端基于 Streamlit的认证体系遵循配置文件即数据库的设计思路核心链路如下用户在登录页输入用户名与密码登录界面实现见 web/components/login.py认证管理器AuthManager读取web/config/users.json将输入密码做 SHA-256 哈希后与文件中存储的哈希比对实现见 web/utils/auth_manager.py校验通过后登录状态写入st.session_state同时注入 JavaScript 将认证数据同步到浏览器localStorage实现刷新页面后自动恢复登录态后续每次页面访问通过is_authenticated()检查会话是否超时、通过check_permission()/require_permission()对功能进行权限门控。用户配置文件位置web/config/users.json。该文件无需手动创建AuthManager在初始化时调用_ensure_users_file()见 web/utils/auth_manager.py若文件不存在会自动生成包含默认账户的初始配置{ admin: { password_hash: admin123 的 SHA-256 哈希, role: admin, permissions: [analysis, config, admin], created_at: 1710000000.0 }, user: { password_hash: user123 的 SHA-256 哈希, role: user, permissions: [analysis], created_at: 1710000000.0 } }默认账户为admin / admin123管理员与user / user123普通用户登录页占位符也对此进行了提示见 web/components/login.py。用户配置文件 users.json 深度解析users.json是一个以用户名为键的 JSON 对象每个用户条目包含以下字段字段类型说明password_hashstring密码的 SHA-256 十六进制哈希值由hashlib.sha256(password.encode()).hexdigest()生成rolestring用户角色取值admin或userpermissionsarray权限列表如[analysis, config, admin]created_atfloat创建时间戳Unix 秒命令行工具展示时会格式化为YYYY-MM-DD HH:MM:SS在源码层面哈希与加载逻辑非常直接见 web/utils/auth_manager.pydef _hash_password(self, password: str) - str: 密码哈希 return hashlib.sha256(password.encode()).hexdigest() def _load_users(self) - Dict: 加载用户配置 try: with open(self.users_file, r, encodingutf-8) as f: return json.load(f) except Exception as e: logger.error(f❌ 加载用户配置失败: {e}) return {}两点需要特别说明密码永不明文存储文件里只有哈希值即使文件泄露也无法直接还原密码加载失败兜底若文件损坏或 JSON 解析异常_load_users()返回空字典此时任何登录都会被拒绝authenticate中用户不存在会记录失败日志并返回 False避免降级到不安全状态。角色与权限模型系统内置两种角色、三类权限点构成简单的角色-权限映射管理员admin权限[analysis, config, admin]可以进行股票分析可以访问系统配置可以管理用户和系统普通用户user权限[analysis]只能进行股票分析无法访问系统配置和管理功能在 web/app.py 中权限门控直接调用require_permission(...)决定页面与功能是否放行例如配置相关页面要求config权限app.py第 931、952 行附近系统管理类操作要求admin权限第 942、963、985 行附近股票分析功能要求analysis权限第 974、1028 行附近。其底层实现位于 web/utils/auth_manager.pydef check_permission(self, permission: str) - bool: 检查当前用户权限 if not self.is_authenticated(): return False user_info st.session_state.get(user_info, {}) permissions user_info.get(permissions, []) return permission in permissionsrequire_permission()在此基础上增加了面向用户的错误提示见 web/utils/auth_manager.py无权限时调用st.error(❌ 您没有 xxx 权限请联系管理员)并返回 False。登录时写入session_state的user_info只包含username、role、permissions三个字段见authenticate返回值web/utils/auth_manager.py后续所有鉴权都基于这三项展开。安全特性实现原理原文档明确的安全特性包括SHA-256 密码哈希、会话超时、权限分级控制、登录日志记录。下面结合源码逐一展开。1. SHA-256 密码哈希所有密码写入文件前都经过hashlib.sha256(password.encode()).hexdigest()单向哈希见 web/utils/auth_manager.py登录校验时对输入密码做相同哈希后比对见authenticateweb/utils/auth_manager.py。校验失败的两种情况——用户不存在、密码错误——都会被记录为登录失败日志。2. 会话超时与前端缓存双保险后端会话超时AuthManager将session_timeout默认设为600000秒见 web/utils/auth_manager.py。is_authenticated()会计算current_time - login_time超过阈值即调用logout()自动登出见 web/utils/auth_manager.py。原文档将其描述为1 小时级会话控制具体生效阈值以auth_manager.py中self.session_timeout 600000的配置为准可按需调整。前端缓存登录时认证数据写入浏览器localStorage的tradingagents_auth键见login()web/utils/auth_manager.py注入页面的AuthCache脚本会在用户无操作 10 分钟后自动清除缓存监听click、keypress、scroll、mousemove更新活动时间见 web/utils/auth_manager.py并在页面加载时通过restore_from_cache()恢复登录态web/utils/auth_manager.py。3. 权限分级控制如上节所述check_permission()/require_permission()构成两级门控前者只返回布尔结果后者在无权限时向用户展示提示并阻断操作。页面层通过 web/components/login.py 暴露的require_permission()与 web/app.py 中的多处调用实现配置页仅管理员可见、分析功能全员可用的访问隔离。4. 登录日志与用户活动审计登录成功、登录失败含失败原因、登出等事件都会写入用户活动记录。实现位于 web/utils/user_activity_logger.py活动文件按天生成路径为web/data/user_activities/user_activities_YYYY-MM-DD.jsonl见 web/utils/user_activity_logger.py每行一条 JSON 记录log_login()记录登录成败与错误原因log_logout()记录登出web/utils/user_activity_logger.pyauthenticate()中已在两种失败场景与成功场景分别调用见 web/utils/auth_manager.py记录字段包括时间戳、用户名、角色、活动类型、活动名、详情、会话 ID、IP、User-Agent、页面、耗时与成功标志UserActivitydataclassweb/utils/user_activity_logger.py默认保留最近 90 天的活动文件可通过cleanup_old_activities()清理web/utils/user_activity_logger.py。添加与管理用户实战添加新用户有两种途径手动编辑 JSON或使用仓库自带的命令行工具推荐。方式一手动编辑 users.json编辑web/config/users.json添加新用户条目格式如下{ 新用户名: { password_hash: 密码的SHA-256哈希值, role: user, permissions: [analysis], created_at: 时间戳 } }password_hash需要你自行计算 SHA-256例如echo -n 你的密码 | sha256sum。这种方式适合批量导入或脚本化写入但手工算哈希容易出错生产环境更推荐方式二。方式二命令行工具推荐仓库在 scripts/user_password_manager.py 提供了完整的用户管理 CLI自动定位web/config/users.json并完成哈希计算与写入无需手工算哈希。# 列出所有用户含用户名、角色、权限、创建时间 python scripts/user_password_manager.py list # 修改用户密码自动做 SHA256 哈希 python scripts/user_password_manager.py change-password admin newpassword123 # 创建新用户默认 role 为 user python scripts/user_password_manager.py create-user newuser password123 --role user # 创建管理员用户 python scripts/user_password_manager.py create-user newadmin adminpass123 --role admin # 删除用户会二次确认且禁止删除最后一个管理员 python scripts/user_password_manager.py delete-user olduser # 重置为默认配置admin/admin123 与 user/user123会二次确认并覆盖现有用户 python scripts/user_password_manager.py resetcreate-user参数说明见 scripts/user_password_manager.py参数说明默认值--role用户角色可选user或adminuser--permissions自定义权限列表不指定则按角色自动分配见下方默认权限默认权限与认证管理器中的内置角色完全一致user角色[analysis]admin角色[analysis, config, admin]内置保护逻辑delete-user会防止删除最后一个管理员见 scripts/user_password_manager.py避免系统失去管理入口reset会覆盖所有现有用户执行前有确认提示。Windows 用户还可以使用配套脚本语法一一对应详见 scripts/USER_MANAGEMENT.md:: 批处理方式 scripts\user_manager.bat list scripts\user_manager.bat change-password admin newpassword123 scripts\user_manager.bat create-user newuser password123 user scripts\user_manager.bat delete-user olduser scripts\user_manager.bat reset# PowerShell 方式 .\scripts\user_manager.ps1 list .\scripts\user_manager.ps1 create-user newuser password123 user典型场景演练场景 1首次部署后修改默认密码强烈建议python scripts/user_password_manager.py change-password admin your_secure_password python scripts/user_password_manager.py change-password user your_user_password场景 2为团队添加分析师与管理员python scripts/user_password_manager.py create-user analyst analyst123 --role user python scripts/user_password_manager.py create-user manager manager123 --role admin场景 3清理测试账号并核对用户列表python scripts/user_password_manager.py delete-user testuser python scripts/user_password_manager.py list安全运维与故障排除安全注意事项请妥善保管用户配置文件web/config/users.json它包含全部账户的哈希与权限信息定期更新密码尤其是admin默认密码admin123必须在生产环境部署后立即修改不要在日志或代码中暴露明文密码信息——认证管理器只记录用户名与登录成败不会输出密码执行reset等破坏性操作前先备份web/config/users.json确保只有授权人员能够访问上述管理工具与配置文件。常见故障排查现象处理方式找不到 Python确认 Python 已安装并加入系统 PATH 环境变量Windows 下权限错误以管理员身份运行命令提示符或 PowerShell配置文件不存在工具会自动创建默认配置文件若仍有问题检查web/config/users.json所在目录的读写权限PowerShell 脚本无法执行调整执行策略Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser登录失败但密码确信正确检查users.json中该用户的role/permissions是否完整必要时用change-password重置密码进阶认证体系向数据库迁移如果团队规模扩大、需要更细粒度的账户管理仓库还提供了将文件认证迁移到数据库认证的脚本例如 scripts/migrate_auth_to_db.py它会读取原有管理员密码、通过user_service.create_admin_user()在数据库中创建/更新管理员并迁移 Web 用户、备份原配置文件备份到config/backup/迁移完成后即可基于数据库认证 API 管理账户相关配套脚本见 scripts/simple_auth_migration.py 与 scripts/migrate_users_to_api.py。这意味着当前文件认证体系是平滑演进、可替换的起点而不是封闭的实现。结语从users.json的结构、AuthManager的认证与鉴权链路到命令行管理工具与活动审计日志TradingAgents-CN 用极简的文件方案覆盖了小型部署场景下用户管理的全部要点SHA-256 哈希存储、会话与前端缓存双超时、角色权限分级、登录日志审计。掌握本指南后你既可以手工编辑配置文件灵活导入用户也能用scripts/user_password_manager.py一行命令完成建号、改密、删号与重置并在生产环境落地改默认密码、定期轮换、备份配置、审计日志的安全基线。进一步了解 Web 端集成方式可参考 web/app.py、web/components/login.py 与 web/utils/auth_manager.py。【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考