前端权限管理实战:从设计到落地的完整方案
核心观点
做权限管理时,很多开发者容易陷入两个误区:要么觉得加几个 if 判断就够了,要么把前端权限当成真正的安全防线。
说实话,前端权限更多是为了提升用户体验和代码可维护性。真正的安全必须依赖后端校验。如果前端逻辑分散在各个组件里,后期维护起来会非常痛苦。我们见过太多因为硬编码权限导致重构成本飙升的案例。
所以,建立一套集中、可扩展的权限体系是必要的,但也要避免过度设计。下面结合 React 生态,聊聊如何落地。
常见陷阱
在动手之前,先看看这些反模式,或许你正在用类似的方式写代码:
- 逻辑分散:每个组件都自己查用户角色,一旦规则变更,得改遍整个项目。
- 硬编码:菜单项直接写死
user.role === 'admin',扩展新角色很麻烦。 - 缺少检查:按钮能点,但接口没拦截,存在安全隐患。
- 状态混乱:权限数据散落在不同地方,缺乏统一的状态管理。
// 反面教材:分散且硬编码
function AdminPanel() {
const user = useUser();
if (user.role !== 'admin') return <div>Access denied</div>;
return <div>Admin Panel</div>;
}
function Menu() {
// 硬编码,难以维护
return (
<nav>
{user.role === 'admin' && <li><a href="/admin">Admin</a></li>}
</nav>
);
}

