在web开发中,之前都使用cookie + session方式来实现身份认证鉴权。但是现在前后端分离,以及终端有可能不支持cookie的情况下,一般都采用token方式。现在系统设计思路如下:

服务端会生成两个token,一个是认证请求token(accesstoken),一个是刷新token(refreshtoken)。 accesstoken设置过期时间为两个小时,refreshtoken设置过期时间为30天。accesstoken两个小时到期后,客户端会使用refreshtoken来刷新accesstoken。refreshtoken过期后,会重新登录。

具体步骤如下:

客户端输入账号登录成功后或者微信扫描成功,服务端会自动生成accesstoken和refreshtoken返给客户端。accesstoken是根据jwt规则生成。refreshtoken生成规规格就是:时间戳+随机数。然后把refreshtoken作为redis的key存入redis中,aceesstoken作为value。

客户端拿到两个token后保存起来,每次请求带上accesstoken。当服务端返回accesstoken错误时,会自动跳转到登录页面。当服务端返回accesstoken过期时,使用refreshtoken去刷新accesstoken。然后在继续拿新accesstoken请求。

现在有两个问题:

一是,我这么设计思路是否合理,在能有效防范XSS攻击情况下,是否能有效防范csrf等安全攻击?还有没有更好的方式?

二是,如果是账号登录,在请求体里返回两个token,以及微信扫描登录重定向页面时,在URL上拼接上两个token。这么做,是否安全?

最新文章

  1. 【CentOS】Linux日常管理
  2. css(二)
  3. 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要系列文章索引
  4. web form 控件
  5. Mysql常出现的问题
  6. TCP keepalive under Linux
  7. 【Beta阶段】第三次scrum meeting
  8. hdu4143 A Simple Problem
  9. 一日一练-CSS CSS中percentage百分值的使用
  10. Ubuntu 安装yii2 advanced版 遇到的坑
  11. C# 合并只要有交集的所有集合
  12. php json_encode中提示的中文总是返回"\u767b\u5f55\u6210\u529f\uff01"的解决办法
  13. RESTful相关理解
  14. Python全栈之路----编程基本情况介绍
  15. mysql5.7报err 1055错误 sql_mode=only_full_group_by
  16. 封装jsonp
  17. css固定footer到浏览器底部的方法
  18. 基于CommonsCollections4的Gadget分析
  19. 训练/验证/测试集设置;偏差/方差;high bias/variance;正则化;为什么正则化可以减小过拟合
  20. 20155322 2016-2017-2 《Java程序设计》实验二《Java面向对象程序设计》

热门文章

  1. 【25.23%】【codeforces 731C】Socks
  2. WPF 使用 SharpDX 在 D3DImage 显示
  3. dp_Pku1887
  4. 推荐一些C#相关的网站和书籍
  5. yii2.0预先处理方法
  6. Java并发编程:synchronized和Lock
  7. 还在使用vc6.0吗??vs2010吧
  8. Linux性能测试 top衍生命令 atop/htop/slaptop
  9. QSplitter实现自由伸缩滑动窗口部件(要在m_pSplitter中加入frame_4之前,给frame_4设置样式;之后设置无效)
  10. 零元学Expression Design 4 - Chapter 5 教你如何用自制笔刷在5分钟内做出设计感效果