人工智能AI 应用大模型媒体生成AI Agent后端前端【免费下载链接】ai-fusion-video【融光】 - 基于 Agent 的全流程AI短剧/漫剧/视频创作平台 - Java agentscope2.0 | Agent-based end-to-end AI creation platform for short dramas, motion comics, and videos – built on Java agentscope 2.0.项目地址https://gitcode.com/gh_mirrors/ai/ai-fusion-video点击查看免费下载融光 ai-fusion-video是基于 Agent 的全流程 AI 短剧/漫剧/视频创作平台Java agentscope 2.0。作为一个多人协作的创作平台它需要回答三个安全核心问题你是谁Token 鉴权、你能干什么用户角色、你能碰哪些作品团队权限。本文带你完整梳理这三层安全机制的实现原理与关键源码位置。一、安全架构总览无状态 Token 鉴权融光采用经典的无状态STATELESS Redis 会话方案核心组件都集中在security包中组件职责源码位置SecurityConfig.java过滤器链、CORS、401/403 统一响应fusion/security/TokenAuthenticationFilter.java每次请求解析 Token 并建立认证上下文fusion/security/TokenService.java双 Token 生成、刷新、吊销Redis 存储fusion/security/SecurityUserDetails.java承载用户 ID、角色、当前团队 IDfusion/security/SecurityUtils.java业务代码中获取当前登录用户fusion/security/1.1 登录与双 Token 机制用户调用/api/auth/login后AuthController.java 通过 Spring Security 的AuthenticationManager校验账密再由TokenService签发一对令牌access_token有效期2 小时每次请求携带用于接口鉴权refresh_token有效期7 天仅用于调用/api/auth/refresh换取新的令牌对。两个细节值得关注令牌轮换Rotation刷新时旧 refresh_token 立即作废签发全新的 refresh_token见 TokenService.java即使旧刷新令牌泄露也无法重复使用单端登录Redis 中维护userId - accessToken映射同一账号在新设备登录会踢掉旧会话。密码存储则使用 PasswordEncoderConfig.java 中配置的BCrypt单向哈希数据库中不存在明文密码。1.2 请求如何被校验每个请求经过 TokenAuthenticationFilter.java 处理从Authorization: Bearer {token}请求头取出 access_token → 到 Redis 查询会话 → 加载用户与角色 → 写入SecurityContext。业务代码随后只需调用SecurityUtils.getCurrentUserId()即可拿到当前用户无需关心鉴权细节。二、接口白名单与 401/403 统一响应并非所有接口都要求登录。SecurityConfig.java 中定义了明确的白名单其余接口一律authenticated()放行路径用途/api/auth/login、/api/auth/register、/api/auth/refresh登录、注册、令牌刷新/api/auth/reset-password/**密码找回/api/system/init/**首次管理员初始化/swagger-ui/**、/v3/api-docs/**接口文档/media/**、/art-styles/**生成的媒体文件与预设画风静态资源上图即来自static/art-styles/目录对于未登录和越权访问融光没有返回默认 HTML 错误页而是统一返回 JSON401{code:401,msg:未登录或登录已过期}403{code:403,msg:没有权限访问}前端 axios 拦截器据此自动触发刷新或跳转登录页体验连贯不中断。三、用户角色admin 与 user 的 RBAC 设计融光使用标准 RBAC 模型角色存储在sys_role表Role.java通过sys_user_role关联到用户。系统内置两个角色admin管理员可管理 AI 模型、API 配置、存储配置、角色、用户、团队等user普通用户使用项目、剧本、分镜、资产等创作功能。登录时 SecurityUserDetailsService.java 会查出用户全部角色并转换为ROLE_ADMIN、ROLE_USER等权限标识。管理端接口则通过方法级注解守护例如 RoleController.javaPostMapping(/create) PreAuthorize(hasRole(ADMIN)) public CommonResultLong createRole(...)使用同样方式的还有 AiModelController.java、StorageConfigController.java、UserController.java 等。普通用户即使伪造请求调用这些接口也会被 Spring Security 拦截并返回 403。 普通用户还能调用/api/system/role/list获取启用的角色列表用于前端权限判断与界面展示。四、团队权限开源版单团队 成员三级角色融光的数据隔离建立在团队之上。开源版仅支持单团队TeamService.java 中createTeam会拦截多团队创建但保留了一套完整的团队角色体系团队角色值说明创建者OWNER1初始化时由管理员账号自动获得管理员ADMIN2团队成员管理普通成员MEMBER3默认角色定义见 TeamMemberRoleEnum.java。4.1 当前团队 ID 存进令牌登录成功后当前团队 ID 会一并写入 Redis 令牌会话TokenSession。业务层通过SecurityUtils.requireCurrentTeamId()获取因此无需信任前端传参数据归属天然绑定到当前认证会话。用户还可通过/api/team/currentTeamController.java切换团队服务端会先校验成员身份再更新令牌。4.2 项目归属与访问控制新建项目时ProjectService.java 会自动打上团队归属ownerType2团队 /1个人访问校验逻辑canAccessProject同文件允许三种情况通过项目是自己个人创建的自己是项目成员ProjectMember表项目属于当前团队或项目创建者是团队内其他成员。剧本ScriptService.java、分镜StoryboardService.java、资产AssetService.java均通过getRequiredCurrentOwnerScopeByUser复用同一套团队归属逻辑保证团队内共享、团队外隔离。五、账号安全初始化与密码找回首次初始化系统未初始化时/api/system/init/setup开放给首位访问者创建管理员账号SystemInitController.java同时自动创建初始团队并默认关闭注册UserService.java后续是否开放注册由管理员在系统配置中控制。密码找回AuthController.java提供两种方式重置凭证在 Redis 中仅保留24 小时且重置后立即销毁邮箱方式配置 SMTP 后发送带 token 的重置链接日志方式仅管理员可用验证码输出到服务端日志适合本地自部署场景。六、前端 Token 管理自动刷新不跳登录页前端由 auth-store.tszustand persist保存令牌对client.ts 的 axios 拦截器完成了体验闭环请求拦截自动注入Authorization: Bearer {access_token}401 自动刷新捕获 401 后调用/api/auth/refresh并采用刷新队列机制——刷新期间并发的其他请求排队等待避免重复刷新失败兜底刷新失败或 refresh_token 过期时清除本地认证状态并跳转/login。七、关键源码导航 关注点路径安全配置与白名单ai-fusion-video/src/main/java/com/stonewu/fusion/security/SecurityConfig.javaToken 双令牌机制ai-fusion-video/src/main/java/com/stonewu/fusion/security/TokenService.java登录/注册/找回接口ai-fusion-video/src/main/java/com/stonewu/fusion/controller/system/AuthController.java团队与成员管理ai-fusion-video/src/main/java/com/stonewu/fusion/service/team/TeamService.java项目访问控制ai-fusion-video/src/main/java/com/stonewu/fusion/service/project/ProjectService.java前端令牌管理ai-fusion-video-web/lib/api/client.ts八、总结融光的安全体系可以概括为三句话无状态 Token Redis 会话解决了你是谁2 小时 access_token 7 天 refresh_token 轮换BCrypt 保护密码RBAC 角色解决了你能干什么PreAuthorize(hasRole(ADMIN))守护所有管理端接口团队归属模型解决了你能碰哪些作品当前团队 ID 绑定令牌会话项目/剧本/分镜/资产统一做团队隔离。对于自部署用户这套机制开箱即用对于二次开发者security包与TeamService的边界清晰是扩展多团队、细粒度权限的理想切入点。赞分享人工智能AI 应用大模型媒体生成AI Agent后端前端【免费下载链接】ai-fusion-video【融光】 - 基于 Agent 的全流程AI短剧/漫剧/视频创作平台 - Java agentscope2.0 | Agent-based end-to-end AI creation platform for short dramas, motion comics, and videos – built on Java agentscope 2.0.项目地址https://gitcode.com/gh_mirrors/ai/ai-fusion-video点击查看免费下载相关推荐Webiny API 安全与认证抽象层完全指南API Keys、角色、用户、团队与权限体系Webiny API 安全与认证抽象层完全指南API Keys、角色、用户、团队与权限体系 导读 Webiny 是一套运行在 AWS Serverless 之CMS后端前端云原生AI 应用S.data与S.value深度对比如何选择适合你的响应式数据源S.data与S.value深度对比如何选择适合你的响应式数据源 在现代JavaScript响应式编程中选择合适的数据源创建方式直接影响应用性能和代码质量TVBoxOSC电视盒子本地播放与网络流的快速配置指南TVBoxOSC电视盒子本地播放与网络流的快速配置指南 TVBoxOSC 是一款开源的电视盒子管理与播放应用面向想在电视大屏上看本地视频和网络内容的人。它解创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考