做管理后台时,前后端分离的问题

2016-07-29 11:20:44 +08:00
 xiewenlongs

做内部管理系统时, 两种实现:

之前使用的是 TEMPLATE 渲染, 这样做前后耦合比较高,前后端代码在一个 project 里。

现在打算前后分离,后端只提供接口。 但有一个问题, 操作权限验证怎么做?

后端可以根据登录 session 判断用户是否有权限并报错, 但是我想实现: 前端根据登录用户的身份,在页面中隐藏一些功能

目前的想法是

前端加载每个页面时,发送获取资源数据接口时, 再发送 GET /user/permission 接口, 获取当前登录用户拥有的权限 list , 根据返回展示或隐藏相应功能.

是否有更好办法?

9876 次点击
所在节点    API
10 条回复
chairuosen
2016-07-29 11:27:02 +08:00
OAuth 那一套,登录取 token ,拿 token 取 user 对象,里面可以有一些级别啊,权限之类的属性。
xiewenlongs
2016-07-29 11:59:25 +08:00
我是说接口设计上,是不是每个页面除了加载数据接口外,还要发一个获取用户权限请求
hxsf
2016-07-29 12:26:05 +08:00
OAuth 拿到 token 后,
后续请求 全部把 token 放 header 或者参数里传回服务器,后端根据 token 判断权限后返回数据。

前端拿到所有数据后做筛选就是掩耳盗铃啊。。。
kookxiang
2016-07-29 12:57:57 +08:00
后端可以输出到 window 里啊,然后前端不就能拿到咯
<script>
window.isAdmin = true;
window.userId = 123;
</script>
learnshare
2016-07-29 13:11:27 +08:00
要做前后端分离,一定要分干净,后端只有 API 就可以了。

至于认证登录,琢磨一套安全性还可以,实现不太复杂的就好了。

登录之后获得 token ,然后每个请求都带 token 比较方便。
loading
2016-07-29 13:18:00 +08:00
无论前台如何,后端也要进行验证, nodejs 简便的地方就体现了。

服务端绝对不能偷懒!
ck65
2016-07-29 13:42:02 +08:00
如果 Java/NodeJS/PHP... 作后端, iOS/Android App 作前端(客户端),用于视图展示的权限判定结果,肯定不能带到接口内部去的,接口依然要独自对数据进行权限和有效性判定。
那么 Java/NodeJS/PHP... 作后端, Web App 作前端(客户端),模式一样。
xiewenlongs
2016-07-29 13:58:29 +08:00
前端想根据登录用户的身份,隐藏掉部分功能(隐藏功能的 API 肯定后端也做权限验证)。 是不是可以在用户登录时,把用户身份放在 cookie 里, 之后每次渲染页面,根据 cookie 显示或隐藏部分功能 (这样前端更好看一些, 把没有权限的功能隐藏,即使被 hack 后端接口也有验证),

这样是不是好点
zhouquanbest
2016-07-29 14:05:39 +08:00
我之前写 admin 总结出来的最好方案是
前端 AngularJS+Bootstrap
后端 Tornado 纯 RESTful

每个请求当然都是有权限判断的 Tornado 实现这个真是 easy
Angular 这种双向绑定的用来写 admin 页面实在是太爽 基本都是数据展示
页面模块化处理也舒服
mcfog
2016-07-29 14:31:59 +08:00
我就奇怪为啥一旦有人问前后端分离中的鉴权问题就有人回答 OAuth ……

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

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

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

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

© 2021 V2EX