能否提供个前后端分离的例子

2017-11-09 15:57:25 +08:00
 chinesedragon
目前,前后端分离开发的概念非常火,而且感觉也比较适合我们公司目前的状态,但是其它人对这个技术不是很了解。
公司开发一个产品,有网页端,有手机端,所以目前想法是做一套后台接口,同时给网页端和手机端使用。
RESTFUL 接口大家都知道怎么做,springmvc 就可以做,就是身份验证部分不知道怎么做。
所以想请 V 友给讲讲,后台 rest 接口如何做身份验证。
如果能有个例子那就更好了,例子最好是简单一点的,js 提交身份信息,后台验证返回结果,然后再 js 请求资源,后台验证身份若通过验证则返回资源信息。
4486 次点击
所在节点    程序员
26 条回复
throns
2017-11-09 16:16:08 +08:00
JWT 呀
pkaq
2017-11-09 16:17:33 +08:00
JWT
biabia123456
2017-11-09 16:24:02 +08:00
我自己的项目是 jwt + redis 做身份认证
chinesedragon
2017-11-09 16:28:42 +08:00
@throns
@pkaq
@biabia123456 谢谢,我查查去。不知道有例子没有
chairuosen
2017-11-09 16:31:39 +08:00
一般后端接口前面有一层网关,后端接口不验证身份,网关验证后放行。
server
2017-11-09 16:33:38 +08:00
whypool
2017-11-09 16:34:58 +08:00
后端:留一个固定的接口返回 token ;
前端:请求头里面加 token,其他不变
chinesedragon
2017-11-09 16:37:02 +08:00
@whypool 后端不是还要验证 token ?
chinesedragon
2017-11-09 16:39:51 +08:00
@server 哥哥,那应该用什么啊?
suikator
2017-11-09 16:46:45 +08:00
jwt 简单易用 文档遍地
kanezeng
2017-11-09 16:47:49 +08:00
@chinesedragon 用 Token,只是不要用 JWT 吧。
JWT 的好处是不需要后端再存储 Token,收到 Token 之后验证 token 有效,就能获得用户信息,比如 id 之类的。
问题在于后端没法强行让 token 失效,比如用户修改了密码,用户要求在所有设备都退出登录之类的。。。
我个人比较喜欢开一个 redis 存储 token,用户登录成功后,后端生成一个 token (指定位数的随机字符串)返回给前端,同时存储在 redis 里(包含对应的用户 id 之类的)。前端后续所有请求都带上这个 token,后端收到 token 后到 redis 里去取用户信息。
hcymk2
2017-11-09 16:50:33 +08:00
如果项目是 all in one 的设计的话,狭义前后端分离其所没有什么意义,反而会让简单项目变的复杂。
chinesedragon
2017-11-09 16:58:45 +08:00
@kanezeng 前端存储 token 是不是放在 cookie 里啊?
chinesedragon
2017-11-09 16:59:08 +08:00
@hcymk2 为什么呢,原因呢?
chinesedragon
2017-11-09 17:00:41 +08:00
@kanezeng 还有 token 一般都放在 header 的哪个里呢?
server
2017-11-09 17:42:34 +08:00
@chinesedragon 归根到底还是 session 的路子,自己造这个轮子。单点登录,多终端登录
haonan3344
2017-11-09 17:50:48 +08:00
@server 已经上了 jwt 的船了,也不下去了。。。
biabia123456
2017-11-09 18:19:51 +08:00
@kanezeng 我是通过再把 token 存在 redis 实现 token 失效验证的 感觉没什么大问题
kanezeng
2017-11-09 19:40:45 +08:00
@chinesedragon 前端通常可以存在 localStorage。提交的时候就看和后端的约定了,常见的比如放在 header 里的 Authorization 字段,也有比如 POST 请求的 BODY 里提交的。
kanezeng
2017-11-09 19:56:29 +08:00
@biabia123456 这个倒是个不错的方法,不过这样的话 JWT 原有的优势就没有了吧

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

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

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

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

© 2021 V2EX