首页 > 其他 > 详细

Session与Token认证方式的区别

时间:2020-06-06 23:05:56      阅读:50      评论:0      收藏:0      [点我收藏+]

  本篇讲Session与Token,在此之前有必要了解一下访问应用服务器的方式。目前有两种常用的方式访问应用服务器:

  1)通过浏览器直接访问应用服务器

  2)通过APP或者Web服务器访问应用服务器

  通过浏览器或者APP访问应用服务器的方式我们很熟悉,那么通过Web服务器访问应用服务器是怎么一回事呢?其实就是我们通常说的前后端分离。HTML作为一种前端资源,不在与应用服务器一块部署,而是单独部署到一个WebServer上,比如Nodejs。前后端分离的架构中,用户直接访问的是WebServer,通过WebServer去访问应用服务器,最终拿到数据。

  与这两种方式相对应,产生了两种处理认证的方式:Cookie-Session方式;令牌(Token)方式。如图所示:

  技术分享图片

  1)Cookie-Session方式

  基于服务器Session实现的保存用户登录信息的方式:用户登录成功后,认证的信息存在服务器的Session中。用户通过浏览器去请求服务的时候,每次服务器都会检查浏览器的Cookie里面是否存在JSESSIONID。如果不存在JSESSIONID,那么在服务器上新建一个Session,并把新建的这个Session的id写到浏览器的Cookie里面,每次用户通过浏览器去发请求的时候,服务器会根据这个id找到相应的Session,取到用户认证信息。

  2)令牌(Token)方式

  原理跟Cookie-Session方式类似,都是给用户一个唯一标识,Cookie-Session方式是往浏览器Cookie里写一个JSESSIONID,令牌方式是直接发给用户一个Token,用户每次访问的时候带着该令牌。应用服务器不再把用户信息存储在Session里,而是根据用户每次请求带着的令牌来判断它是谁,它有什么权限,能干什么,令牌就是一个字符串。

  通过上面的介绍,我们可以得知浏览器直接访问应用服务器的时候适合使用Cookie-Session方式,因为浏览器默认处理了Cookie信息。其实使用APP或者前后端分离也可以使用Cookie-Session方式,理论上只要发送HTTP请求的时候能够处理Cookie就可以,但是这样做会出现问题:

  1)开发繁琐。

  每一个APP都要自己处理Cookie,每次APP关闭再打开后,之前的Cookie数据都是空的,需要自己写逻辑处理之前存的用户信息。

  2)安全性和客户体验差。

  Session超时设置长JSESSIONID容易被别人盗取,不安全;设置短又会使用户频繁登录,用户体验差。

  3)有些前端技术不支持Cookie

  APP和WebServer处理Cookie时虽然繁琐,但总算支持Cookie。微信小程序不支持Cookie,无法使用Cookie-Session方式。

 

Session与Token认证方式的区别

原文:https://www.cnblogs.com/javasl/p/13056781.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!