设计:在一个系统中,每一个能被用户访问到的资源都有一个对应的 PermissionCode,权限标识。
方案 1:由后端开发人员定义一套权限标识,每一个接口对应到一个权限标识,前后端共享这套权限标识,用户登陆的时候获取到当前用户的所有权限标识,根据用户拥有的权限标识来决定要不要渲染某个特定的组件,如:表单,按钮等
方案 1 的优点:前后端共用一套权限标识,减少了很多维护成本
方案 1 的缺点:前端的组件和后端接口的关系有时不是一一对应的,如:前端有一个 panel,上面有三个 tab1,tab2,tab3,这三个 tab 对应到后端的某个接口 A,虽然用户拥有了接口 A 的权限,但是由于用户由于角色问题无法访问到 tab3 的数据,接口 A 只会返回 tab1,tab2 的数据,由于公用权限标识,这个时候无法隐藏掉 tab3 (你可能会觉得 tab3 可以显示,只是没数据而已,但是可能存在一些场景是需要隐藏掉的,只能从设计 ui 上面去调整)
方案 2:前端只管前端的权限标识,后端只管后端的权限标识,分成两套,用户登陆的时候只会获取到和前端相关的权限标识,并根据具体业务去渲染不同的组件。
方案 2 的优点:可以避免方案 1 出现的问题
方案 2 的缺点:增大了维护成本
目前实践上,哪种方案是比较好的?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.