trainer通过管理端跳转虚拟课堂直播角色功能失效问题
trainer 虚拟课堂角色跳转失效问题的排查记录。
#status / growing
#type / debug
#tech / dev / frontend
trainer 通过管理端跳转虚拟课堂直播角色功能失效问题
现象
trainer(讲师)通过管理端跳转进入虚拟课堂直播时,角色应为 MODERATOR(主持人),但实际以 VIEWER(观众)身份进入,无法使用主持功能(如静音、踢人、屏幕共享)。
原因
后端 join API 存在一个封装好的接口,用于区分 MODERATOR 和 VIEWER 角色,但调用时需要传入指定参数(如 role=MODERATOR 或 trainerId)。academy 前端在跳转时没有传递该参数,导致后端默认返回 VIEWER 角色。
排查
1. 确认接口文档
POST /api/v1/classroom/join
{
"classroomId": "xxx",
"userId": "xxx",
"role": "MODERATOR" | "VIEWER" // 缺少此字段
}
2. 检查前端调用代码
在 academy 前端项目中找到跳转入口:
// 问题代码:缺少 role 参数
const joinClassroom = async (classroomId: string) => {
const res = await api.post('/classroom/join', {
classroomId,
userId: currentUser.id,
// 缺少 role 字段,后端默认为 VIEWER
});
window.location.href = res.data.liveUrl;
};
3. 确认角色判断逻辑
// 检查用户身份是否为 trainer
const isTrainer = currentUser.roles.includes('trainer');
解决
// 修复:根据用户身份传入正确的角色参数
const joinClassroom = async (classroomId: string) => {
const isTrainer = currentUser.roles.includes('trainer');
const res = await api.post('/classroom/join', {
classroomId,
userId: currentUser.id,
role: isTrainer ? 'MODERATOR' : 'VIEWER', // 关键修复
});
window.location.href = res.data.liveUrl;
};
同时需要后端确认:
- 接口已支持
role参数的接收和处理 - 权限校验:非 trainer 身份不允许传入
MODERATOR
验证
- 以 trainer 身份从管理端跳转进入虚拟课堂,确认角色显示为 MODERATOR
- 以普通学员身份跳转,确认角色为 VIEWER
- 检查网络请求中
role参数正确传递