文档章节

前后端分离的项目,如何解决登录问题

小致dad
 小致dad
发布于 2017/04/10 09:12
字数 341
阅读 13209
收藏 107

方案一:使用token

  1. 前端把accountpassword,提交到服务端的登录api
  2. 服务端验证正确后,生成一个token,并把tokenuserId,存在缓存里(推荐redis数据库),然后把token返回给前端。
  3. 前端每次的请求头中带token,这样就能够轻松的实现

方案二:使用cookie

  1. client发送username和password到server

  2. server验证成功后, 写cookie到client,然后返回ok的json, 其中cookie的key要存储在redis中,value就是用户信息, 并且要设置key的超时时间,如:60分钟

  3. client收到ok后, 进行相应的业务操作, 以后每次请求server都会自动带上cookie, 不用你写代码

  4. server端的filter(你肯定用filter来实现)中会每次验证传过来的cookie的key在redis中是否存在, 有就代表登录成功过可以操作, 没有就返回错误标识注意: 在登录成功后, 每次调用服务器接口时候, 都要为redis的key进行续期,如60分钟

  5. 当redis的key超过60分钟, 自己会删除这个key, 那么再次请求server时, 就会收到需要登录的返回值

  6. 当用户主动退出系统的时候, 也要在server中删除redis的key

 

© 著作权归作者所有

共有 人打赏支持
小致dad
粉丝 134
博文 535
码字总数 580132
作品 0
济南
技术主管
加载中

评论(28)

c
cyrus_hw
hi 请教个场景, 前后端分离 如果支持第三方登录(微信 微博 qq等)的话,使用jwt 是不是前端那边需要开放一个用户登录后接收token ref_token的回调? 这样如果第三方网站恶意跳转呢
moxiaole
moxiaole

引用来自“jdk2010”的评论

如何防止token篡改,例如,用户A,使用用户B的token,那操作算谁的

引用来自“OSC_hZGxcN”的评论

没想到直接解决的办法,但是token加有效期可以解决吗?
设定一个算法,生成的 token 暗含 account 信息,同时可以从 token 中解析出 account 信息。破解了这个算法才可以实现用户伪造。
imxae
imxae
为什么不用oath2
MGL_TECH
MGL_TECH
难道不是一二结合吗?拿到token,保存完缓存,并把给客户端返回的token设置想到cookie里不行?
shijunti
shijunti
我是每个用户随机生成一段32位字符串,cookie保存,如果不自动登录就session
月之舞步
月之舞步

引用来自“dingdayu”的评论

引用来自“月之舞步”的评论

引用来自“程序兵”的评论

需要这么麻烦吗,登陆完成后直接把用户id用session存起来,每次请求都判断session是否过期,过期了就提醒前端重新登录。

引用来自“shijacky”的评论

你做的系统分分钟被黑
你把黑的过程分享下。如果session被黑了,那么token又能安全到哪里去。。

session是后端,这里是需要前端告诉后端取谁的session。。。。你是搞前端的吧?
你到底懂我说的是什么吗?前后端分离用token不用session难道是因为安全问题???????我只不过顺着那人黑session的牛逼样子说了下去。让他说出黑的过程。
蛐蛐未加V
蛐蛐未加V
你说的前后端分离是哪种? 前端页面和后台 单独部署 还是 前后端交互只使用ajax的这种?
石头捡到布
石头捡到布

引用来自“程序兵”的评论

需要这么麻烦吗,登陆完成后直接把用户id用session存起来,每次请求都判断session是否过期,过期了就提醒前端重新登录。
刚那回复,理解错了! 自己的评论不允许删除,我擦
石头捡到布
石头捡到布

引用来自“程序兵”的评论

需要这么麻烦吗,登陆完成后直接把用户id用session存起来,每次请求都判断session是否过期,过期了就提醒前端重新登录。
前后端分离的,你保存到session有什么用?
石头捡到布
石头捡到布
上次做了个简单的前后端分离的项目,直接是差不多用的你第一种方式,用户登录保存用户id和token到redis,然后设置有效时间为30分钟,每次访问一个接口都会重置有效时间,但是提到的用户a拿用户b的token这个直接忽略了,毕竟小项目!
Spring Boot + Vue前后端分离开发实战

前后端分离是一种开发方式,已经变得越来越流行了,越来越多的企业都开始往这个方向靠拢。那么,为什么要选择前后端分离呢?前后端分离对实际开发有什么好处呢? 前后端分离可以让专人做专事,...

尹吉欢
06/10
0
0
前后端分离跨域问题

公司第一次采用前后端来进行后台开发,在开发过程中出现了跨域问题,被折磨的快要疯了,是这样,后台登录完成后将用户信息保存在session中,再调另一个接口获取session中的用户信息,大概是因...

一个大苹果
2017/12/18
194
3
前后端分离--拿起node反向代理的武器(全记录)

做个勇往直前的人,做个勇往直前的前端 文/ziven 标题图/来自网络 前后端分离是个很重要的概念,尤其是今天的大前端时代。jsp,html嵌套在java web项目中似乎显得比较古老而厚重。当我们处在...

ziven先生
2017/06/28
0
0
实现前后端分离的心得

原文出处:陈陈jg 实现前后端分离的心得 对目前的web来说,前后端分离已经变得越来越流行了,越来越多的企业/网站都开始往这个方向靠拢。那么,为什么要选择前后端分离呢?前后端分离对实际开...

陈陈jg
2017/07/02
0
0
前后端分离

前后端分离实践有感 前后端分离并不是什么新鲜事,到处都是前后端分离的实践。然而一些历史项目在从一体化 Web 设计转向前后端分离的架构时,仍然不可避免的会遇到各种各样的问题。由于层出不...

晨曦艾伯特
01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Bytom资产发行与部署合约教程

比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 发行资产 在比原链上发行资产比较方便快捷,使用节点的dashboard图形界面...

比原链Bytom
9分钟前
0
0
Ext ComboBox 实现下拉多选,全选,反选

Ext ComboBox下拉选中-全选反选逻辑处理 Ext ComboBox 实现下拉多选,全选,反选 方法一: 代码 var me = this;var isMultiSelect = true;//是否设置为下拉多选me.selectValues = [];//保存...

javaART
12分钟前
0
0
Swoole Windows 版(4.2.1)

https://pan.baidu.com/s/1uTm77_cp4kn0_xMgO1DpIw Swoole Windows 版(内部版本,swoole-4.2.1,php-7.1,必须为64位系统,Win7或更高版本)。 解压后,将 $dir/bin 目录,设置到 系统的环境...

老查
14分钟前
0
0
美团点评上市受追捧,成中国第四大互联网企业

从建立到上市,蔚来用了不到4年,拼多多3年,趣头条更是仅用了2年3个月。在这波中概股上市浪潮中,等待了漫长8年的美团点评也终于迎来登陆资本市场的时刻。20日上午,美团创始人兼CEO王兴终于...

Mr_zebra
15分钟前
0
0
Mysql-mybatis批量插入

话不多说直接上代码吧 <insert id="batchSave" >insert into table_name (`name`,age)values<foreach collection="list" index="index" item="item" open="(" separator="," close=......

落叶清风
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部