大厂如何“隐藏”前端权限数据
大厂如何“隐藏”前端权限数据
看起来“没返回权限”,其实只是拆分、压缩、加密后藏在别处。
-
角色 + 静态映射
-
后端只返回
role: "vip" -
前端内置映射
const ROLE_ROUTES = { vip: ['/home', '/vip-only'], guest: ['/home'] }
-
-
加密菜单树
-
接口返回
{ "menu": "AES加密后的字符串==", "ts": 1690000000 } -
前端预埋 key 解密后生成路由
-
-
路由 ID 列表
-
后端返回无意义 ID
{ "allowedPages": ["p_1001", "p_1005"] } -
前端映射
const PAGE_MAP = { p_1001: { path: '/calendar', component: Calendar }, ... }
-
-
SSR 直出 HTML
- 服务端根据权限直接拼接好菜单 HTML,前端无单独权限接口
-
JWT payload 抽象字段
-
使用无业务含义字段名
{ "a": ["r1","r3"], "b": 1 }
-
安全底线
无论前端如何隐藏,真正的权限校验仍由后端兜底。
本文由萧兮的博客原创发布,欢迎转载,转载务必保留原文链接。
萧兮的博客:https://www.20010515.xyz · 原文:https://www.20010515.xyz/posts/1d132913-85f9-4d80-8083-b4f9f765f421