前后端分离的项目,如何前端界面如何实现权限控制?

2020-01-15 15:40:56 +08:00
 frozenway

以前 php 和 html 混合的代码,可以通过 php 权限控制函数来实现,但是前后端分离后,前端只通过 api 接口来获取数据,想来想去,每个页面几个功能,每个都调用一次 api 来确认一下是否有权限,服务器会不会扛不住?大家现在是怎样的思路?

11983 次点击
所在节点    PHP
50 条回复
redbuck
2020-01-16 17:03:29 +08:00
第一步,整个 app 启动时,拉取用户信息.

再就看你粒度做到多细了.
页面级,前端路由都有相应的钩子,用进入页面前的钩子检查.
按钮级,vuex 或者 redux 全局存储用户权限,然后搞一个高阶组件包装需要鉴权的按钮.

当然,最要紧的还是后端,每个接口都通过 jwt 或者 cookie 鉴权即可.
MaxTan
2020-01-16 17:05:39 +08:00
不用另外调 api 确认权限,请求里面带上 token 就行了
前端路由来控制页面
vagranth
2020-01-16 17:56:46 +08:00
我的第一直觉是,用 keycloak
Arisky
2020-01-16 18:25:43 +08:00
页面权限可以用路由保护来做。react 和 vue 都有。其他权限可以根据接口获取的权限树来做。
不过需要注意的是,前端的权限控制的只是展示。后端接口一样需要做权限控制。
ChefIsAwesome
2020-01-16 18:32:00 +08:00
老生常谈的问题。你想想如果页面一直开着,直到身份过期。这时候前台能显示的是不是都显示了,如果后端不做验证,是不是毫无意义。
guolaopi
2020-01-16 18:37:35 +08:00
别纠结可见性了。。我记的 element-admin 里面是控制按钮是否渲染,而不是是否可见
geeksun
2020-01-17 08:11:03 +08:00
在后端的 API 工程里增加 Interceptor 实现用户对访问 URL 权限的拦截,在前端实现比较鸡肋
gengbo25hao
2020-01-17 09:45:19 +08:00
vue+elementui 后端返回数据格式与 vue 路由参数格式一样,前端获取参数添加 this.$router.addRoutes(menuResolve);
Achiii
2020-01-17 09:48:31 +08:00
你可以前端是一致的,请求某个功能的时候才判断有无权限
chenhui7373
2020-02-02 17:22:44 +08:00
之前不知道的时候觉得一定有啥奇技淫巧,后面看了 jhipster 的文档,原来原理也是前端只做 ui 显示隐藏而已,真正权限在后端控制。

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

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

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

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

© 2021 V2EX