权限级别系统
CZL Connect提供分层权限管理系统,支持应用级别的用户权限控制
系统概述
CZL Connect的权限级别系统为每个应用提供了灵活的用户权限管理。应用创建者和管理员可以为用户分配不同的权限级别, 实现精细化的权限控制。系统支持层级权限继承,使得权限管理更加直观和方便。
权限层级
admin最高权限
- • 可以修改应用配置(名称、描述、重定向URL等)
- • 可以管理应用用户(封禁/解封、修改权限级别)
- • 可以查看应用统计数据和用户列表
- • 可以重新生成应用密钥
- • 可以启用/禁用应用
- • 注意:无法删除应用(仅应用创建者可删除)
- • 注意:无法取消应用创建者的admin权限
viewer查看权限
- • 可以查看应用统计数据
- • 可以查看用户列表和用户信息
- • 限制:无法修改应用配置
- • 限制:无法封禁/解封用户
- • 限制:无法修改用户权限级别
- • 限制:无法查看应用配置(Client ID/Secret等)
t0t1t2t3t4t5
普通用户等级- • 在CZL Connect系统内权限相同(可正常登录和使用应用)
- • 主要用于第三方应用内部的权限管理
- • 应用可根据这些等级实现自定义的权限控制
- • t0:新用户默认等级
- • t1-t5:递增的信任等级,具体含义由应用定义
- • 无法访问CZL Connect的应用管理界面
实现方式
权限分配
- 应用创建者:在授权时自动获得admin权限
- 普通用户:首次授权时默认为t0级别
- 权限提升:应用创建者和admin用户可在应用管理界面修改用户权限
OAuth2/OIDC集成
在OAuth2.0和OIDC的用户信息响应中,groups
字段提供层级权限信息:
{
"id": 1,
"username": "user",
"groups": "t0,t1,t2,t3,t4,t5,viewer,admin",
// ... 其他字段
}
groups字段包含用户当前级别及其下属的所有权限级别,便于应用进行权限判断。
权限继承
权限级别按以下顺序递增,高级别用户拥有低级别的所有权限:
t0→t1→t2→t3→t4→t5→viewer→admin
使用示例
前端权限判断
// JavaScript示例
function hasPermission(userGroups, requiredLevel) {
if (!userGroups) return false;
const groups = userGroups.toLowerCase().split(',');
return groups.includes(requiredLevel.toLowerCase());
}
// 使用示例
const userInfo = {
groups: "t0,t1,t2,t3,t4,t5,viewer,admin"
};
// 检查是否有管理员权限
if (hasPermission(userInfo.groups, 'admin')) {
console.log('用户是管理员,可以访问所有功能');
}
// 检查是否有查看权限
if (hasPermission(userInfo.groups, 'viewer')) {
console.log('用户可以查看数据');
}
// 检查特定等级
if (hasPermission(userInfo.groups, 't3')) {
console.log('用户等级为t3或以上');
}
后端权限验证
// Go示例
func hasPermission(userGroups string, requiredLevel string) bool {
if userGroups == "" {
return false
}
groups := strings.ToLower(userGroups)
required := strings.ToLower(requiredLevel)
return strings.Contains(groups, required)
}
// 使用示例
userGroups := "t0,t1,t2,t3,t4,t5,viewer,admin"
if hasPermission(userGroups, "admin") {
// 管理员权限操作
}
if hasPermission(userGroups, "t2") {
// t2或以上等级操作
}
应用场景示例
论坛应用:t0用户只能浏览,t1可以回复,t3可以发帖,admin可以管理版块
文件管理系统:t0只读,t2可以上传,t4可以分享,admin可以删除
监控系统:viewer可以查看图表,admin可以配置告警
最佳实践建议
- 在应用设计时就规划好权限等级的具体含义和功能映射
- 利用权限继承特性,避免重复判断多个权限级别
- 为关键操作设置合适的权限门槛,确保系统安全
- 定期审查用户权限,及时调整不合适的权限分配
- 在用户界面中清楚地标识不同功能所需的权限级别
- 考虑为新用户提供权限说明,帮助他们理解等级体系