前端权限控制设计:告别硬编码判断
痛点分析
各位前端同行,咱们今天聊聊前端权限控制。别告诉我你还在每个页面写死权限判断,那感觉就像在每个房间都装一把不同的锁——管理起来要命。
最近看到一个项目,权限判断散落在 100 个文件里,改一个权限规则要改 100 处,维护成本极高。我就想问:你是在做权限控制还是在做权限混乱?
反面教材
// 分散的权限判断示例
// Page1.jsx
if (user.role !== 'admin') {
return <div>无权限</div>;
}
// Page2.jsx
if (!user.permissions.includes('user:view')) {
return <div>无权限</div>;
}
// Page3.jsx
if (user.role !== 'admin' && user.role !== 'manager') {
return <div>无权限</div>;
}
这种写法的问题在于逻辑耦合严重。权限判断散落各处,一旦业务变更,你需要像扫雷一样逐个排查。这不仅增加了出错概率,也让新接手的人一头雾水。
前端权限控制的正确姿势
1. 基于角色的权限控制(RBAC)
核心思路是将权限配置集中管理,通过角色映射权限列表。这样修改权限时只需调整一处配置。
// permissions/index.js
const permissions = {
admin: ['*'], // 所有权限
manager: ['user:view', 'user:edit', 'report:view'],
: [, ]
};
() {
userPermissions = permissions[user.] || [];
userPermissions.() || userPermissions.(permission);
}


