文档章节

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

小致dad
 小致dad
发布于 2017/04/10 09:12
字数 341
阅读 15164
收藏 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
粉丝 139
博文 536
码字总数 580320
作品 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
node使用JsonWebToken 生成token,完成用户登录、登录检测

最近在用node做后台的登录,检测登录功能。在本地使用session可以成功,但是放服务器后发现session失效了,每次请求session都会变化,着了很久原因。原来,自己项目是前后端分离的,前端调用...

taoland
08/12
0
0
前后端分离 | 关于登录状态那些事

背景 登录是一个网站最基础的功能。有人说它很简单,其实不然,登录逻辑很简单,但涉及知识点比较多,如: 密码加密、cookie、session、token、JWT等。 我们看一下传统的做法,前后端统一在一...

小忽悠
10/12
0
0
前后端分离跨域问题

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

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

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

ziven先生
2017/06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

phpstorm xdebug 配置

xdebug方便了调试代码,比起一个一个地方的打印结果还是debug看的更明白下面介绍下maxOS系统下的debug配置 下载 https://xdebug.org/download.php 点击红线部分进入,粘贴phpinfo()信息推荐适...

被猪拱了的JAVA
21分钟前
2
0
Golang学习笔记(1)

基本知识 golang的文件格式以go结尾。 运行方式 go run main.go 用于开发调试使用 编译成二进制文件 go build main.go 会生成一个可执行的二进制文件 变量 变量定义的形式 Golang的变量定义有...

ExtreU
35分钟前
1
0
基于Kafka构建事件溯源模式的微服务

概要 本文中我们将讨论如何借助Kafka实现分布式消息管理,使用事件溯源(Event Sourcing)模式实现原子化数据处理,使用CQRS模式(Command-Query Responsibility Segregation )实现查询职责...

架构师springboot
41分钟前
1
0
git上传项目步骤

https://blog.csdn.net/m0_37725003/article/details/80904824

fame_yao
42分钟前
1
0
NOOBS自定义安装多系统

一、预置条件: 宿主系统是win10_x64 virtual box 虚拟机,安装了centos7 树莓派的系统安装工具:NOOBS_v2_9_0.zip,镜像文件 二、根据镜像文件生成boot.tar.xz 和root.tar.xz 1、设置共享目...

mbzhong
52分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部