后台管理系统开发如果采用目前主流前端后分离的方式,如何[[严格]]控制按钮权限呢,严格的含义是:完全对用户隐藏其无权操作的按钮,哪怕他 F12 看 html、js 也找不到

2021-11-25 19:10:40 +08:00
 bgt
以前用前后端不分离的方式严格控制按钮可见权限是非常容易的,因为控制逻辑本质是在服务端运行。前后端分离后,假设用的是 vue 来开发后台,某后台页面有添加、编辑、删除三个按钮,某用户只有添加和删除权限,如果用 v-if 之类的前端方式,控制按钮显隐的逻辑肯定就暴露在前端了,这意味着编辑按钮的名称还是被暴露了、甚至相关编辑表单也会被暴露。当然了,服务端的权限判断是最后一道关卡,恶意用户最终仍然无权提交编辑,但如果我们想严格控制、彻底隐藏用户无权操作的按钮及相关页面,大家有什么方式吗
1822 次点击
所在节点    问与答
11 条回复
oott123
2021-11-25 19:18:30 +08:00
代码做组件拆分,拆分成不同的 js ,服务端对 js 静态文件请求做鉴权
rrfeng
2021-11-25 19:18:37 +08:00
伪需求。
后端权限不是最后一道关卡,应该是唯一一道关卡。
前段可以根据权限做隐藏属于体验优化,无权拦截用户请求(实际是无法做到)。
eason1874
2021-11-25 19:50:36 +08:00
把状态管理移到后端,比如菜单项 JSON 由后端返回
az22c
2021-11-25 20:31:00 +08:00
没必要做得那么细,除非闲得很。

我这边十几个系统都是我开发的,做了按钮权限之后,基本上管理跟不上。当初废大力气做的就是图个心理安慰。最多就是做到菜单层级的权限。
night98
2021-11-25 21:28:46 +08:00
服务端返回用户可操作的按钮列表,web 端 v-if 不渲染此按钮
cmdOptionKana
2021-11-25 21:47:46 +08:00
直接不渲染就行了啊
calmzhu
2021-11-25 22:22:14 +08:00
碰见过,解决方案是菜单+ 按钮 直接放在数据库里。前段先用接口查用户有权限的菜单。 但是维护起来巨恶心
gefangshuai
2021-11-25 22:23:32 +08:00
vue v-if
lhx2008
2021-11-25 22:25:38 +08:00
想到一个点子,可以开一个虚拟机,然后打开网站就 VNC 连上去,这个虚拟机里面再用特制浏览器打开楼主写的网站,这样就稳得一批了
lhx2008
2021-11-25 22:30:01 +08:00
其实应该直接服务端 render 就解决了
akira
2021-11-26 05:01:01 +08:00
菜单 按钮 都是后端返回的就好了。但是这样的话,有些功能可能不是那么好写。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/817994

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX