录像回放权限配置说明
录像回放权限配置说明
录像回放权限配置说明
概述
根据系统权限说明文档中的权限隔离原则,为录像回放相关功能设置了单独的权限位(权限位21:RECORD_PLAYBACK),实现与实时监控权限的独立控制。
修改内容
1. 权限常量定义
文件: platapp/04_sunri-web-patrol/sunri-web-center-utils/src/main/java/com/sunri/constant/RightConstant.java
修改内容: 添加录像回放权限常量
// 录像回放: 操作员,对应实时监控->录像回放相关界面的浏览、查询权限
public static final int RECORD_PLAYBACK = 21;同时更新了操作员权限注释,增加 RECORD_PLAYBACK 权限位。
2. Controller API权限注解更新
2.1 HighDefinitionVideoEquipmentController.java
文件: platapp/04_sunri-web-patrol/sunri-web-center-cygbusiness/cygbusiness-model/src/main/java/com/sunri/model/controller/account/HighDefinitionVideoEquipmentController.java
修改的API方法:
getVideoFileList- 录像-获取文件列表getVideoFileUrl- 录像-获取回放地址stopVideoFileUrl- 录像-停止回放/推流videoPlayBackControl- 录像-回放控制videoProgress- 录像-进度获取getAfterCalibrationStartTime- 录像-获取校准后开始时间
权限变更: 从 @ApiRight(value = {REAL_TIME_MONITORING}) 改为 @ApiRight(value = {RECORD_PLAYBACK})
2.2 ResourceController.java
文件: platapp/04_sunri-web-patrol/sunri-web-center-standalone/standalone-patrol/src/main/java/com/sunri/controller/ResourceController.java
修改的API方法:
downloadVideoChunk- 下载文件到浏览器(分片)getDownloadChunkSize- 获取下载文件分片数
权限变更: 从 @ApiRight(value = {REAL_TIME_MONITORING, ALGORITHM_VERIFICATION}) 改为 @ApiRight(value = {REAL_TIME_MONITORING, RECORD_PLAYBACK, ALGORITHM_VERIFICATION})
2.3 HighDefinitionVideoMonitorController.java
文件: platapp/04_sunri-web-patrol/sunri-web-center-cygbusiness/cygbusiness-model/src/main/java/com/sunri/model/controller/monitor/HighDefinitionVideoMonitorController.java
修改的API方法:
videoDownload- 录像-开始下载/手动录像
权限变更: 从 @ApiRight(value = {DEVICE_CONTROL}) 改为 @ApiRight(value = {RECORD_PLAYBACK})
3. 数据库配置脚本
-- 录像回放权限配置脚本
-- 功能:为录像回放相关功能添加权限位21(RECORD_PLAYBACK)的单独控制
-- 1. 添加录像回放权限常量到 cfg_auth_const 表
INSERT INTO cfg_auth_const (right, description, create_time, update_time)
VALUES (21, '录像回放', NOW(), NOW())
ON DUPLICATE KEY UPDATE description = '录像回放', update_time = NOW();
-- 2. 查找录像回放相关的菜单ID
-- SELECT id, name, nodeid, url FROM cfg_menu WHERE name LIKE '%录像%' OR name LIKE '%回放%';
-- 3. 为录像回放菜单绑定权限位21(按实际菜单修改)
-- INSERT INTO cfg_resource_right (resource_id, right)
-- VALUES (7, 21)
-- ON DUPLICATE KEY UPDATE right = 21;
-- INSERT INTO cfg_resource_right (resource_id, right)
-- SELECT id, 21 FROM cfg_menu WHERE nodeid = 'LXHF'
-- ON DUPLICATE KEY UPDATE right = 21;
-- 4. 更新角色权限配置(示例)
-- UPDATE user_role_info SET role_authority = role_authority | 2097152 WHERE role_name = '操作员';
-- UPDATE user_role_info SET role_authority = role_authority | 2097216 WHERE role_name = '监控操作员';
-- UPDATE user_role_info SET role_authority = role_authority | 2097152 WHERE role_name = '录像查询员';
-- 5. 验证配置
-- SELECT * FROM cfg_auth_const WHERE right = 21;
-- SELECT mr.*, m.name, m.nodeid FROM cfg_resource_right mr JOIN cfg_menu m ON mr.resource_id = m.id WHERE mr.right = 21;
-- SELECT role_id, role_name, role_authority, (role_authority & 2097152) > 0 AS has_record_playback_permission FROM user_role_info;
-- 回滚SQL
-- DELETE FROM cfg_auth_const WHERE right = 21;
-- DELETE FROM cfg_resource_right WHERE right = 21;
-- UPDATE user_role_info SET role_authority = role_authority & ~2097152 WHERE role_authority & 2097152 > 0;权限隔离优势
通过将录像回放权限从实时监控权限中独立出来,实现了以下优势:
| 场景 | 实时监控权限(6) | 录像回放权限(21) | 说明 |
|---|---|---|---|
| 实时监控员 | ✅ | ❌ | 只能查看实时监控画面 |
| 录像查询员 | ❌ | ✅ | 只能查看历史录像回放 |
| 监控操作员 | ✅ | ✅ | 既能看实时监控也能看录像回放 |
| 数据分析员 | ❌ | ✅ | 只能进行录像数据分析 |
实施步骤
代码修改(已完成)
- ✅ 在
RightConstant.java中添加RECORD_PLAYBACK = 21常量 - ✅ 更新录像回放相关API的权限注解
- ✅ 创建数据库配置脚本
数据库配置(需要手动执行)
- 备份数据库
- 执行上文中的 SQL 配置脚本
- 根据实际菜单数据,确认录像回放菜单的ID或nodeid
- 更新角色权限配置
- 验证配置是否正确
系统部署
- 编译代码
- 部署应用
- 执行数据库配置脚本
- 相关用户重新登录以获取新权限
权限位计算
- 权限位21的值: 2^21 = 2,097,152
- 实时监控权限位6的值: 2^6 = 64
- 同时拥有实时监控和录像回放权限: 64 + 2,097,152 = 2,097,216
角色权限配置示例
-- 操作员:增加录像回放权限
UPDATE user_role_info SET role_authority = role_authority | 2097152 WHERE role_name = '操作员';
-- 监控操作员:拥有实时监控和录像回放权限
UPDATE user_role_info SET role_authority = role_authority | 2097216 WHERE role_name = '监控操作员';
-- 录像查询员:只拥有录像回放权限
UPDATE user_role_info SET role_authority = role_authority | 2097152 WHERE role_name = '录像查询员';注意事项
- 数据库备份: 执行数据库脚本前,请务必备份数据库
- 菜单确认: 脚本中的菜单ID需要根据实际情况进行确认和修改
- 角色权限: 角色权限配置需要根据实际业务需求进行调整
- 用户登录: 修改角色权限后,相关用户需要重新登录才能生效
- 权限测试: 部署后请进行全面的权限测试,确保权限控制正确
回滚方案
如需回滚,请执行以下操作:
- 恢复代码版本
- 执行上文中的回滚 SQL 脚本
- 重新部署应用
- 相关用户重新登录
验证方法
代码验证
# 搜索所有使用RECORD_PLAYBACK权限的API
grep -r "RECORD_PLAYBACK" --include="*.java" platapp/数据库验证
-- 查看权限常量
SELECT * FROM cfg_auth_const WHERE right = 21;
-- 查看菜单权限绑定
SELECT mr.*, m.name, m.nodeid
FROM cfg_resource_right mr
JOIN cfg_menu m ON mr.resource_id = m.id
WHERE mr.right = 21;
-- 查看角色权限
SELECT role_id, role_name, role_authority,
(role_authority & 2097152) > 0 AS has_record_playback_permission
FROM user_role_info;功能验证
- 创建只拥有录像回放权限的用户角色
- 使用该角色登录系统
- 验证只能访问录像回放功能,不能访问实时监控功能
- 创建只拥有实时监控权限的用户角色
- 使用该角色登录系统
- 验证只能访问实时监控功能,不能访问录像回放功能
相关文档
- 权限管理系统文档.md: 完整的权限管理说明文档
版本信息
- 修改日期: 2026-03-05
- 修改人员: 系统管理员
- 版本: 1.0.0
- 状态: 已完成代码修改和数据库配置
