当前位置:首页 > 站长经验 > 正文内容

简单理解token机制

a811625533年前 (2023-02-22)站长经验6

  在简单理解cookie/session机制这篇文章中,简要阐述了cookie和session的原理。本文将要简单阐述另一个同cookie/session同样重要的技术术语:token。

  

 

  什么是token

  token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。

  当用户之一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。

  简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。

  身份认证概述

  由于HTTP是一种没有状态的协议,它并不知道是谁访问了我们的应用。这里把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下次这个客户端再发送请求时候,还得再验证一下。

  通用的解决 *** 就是,当用户请求登录的时候,如果没有问题,在服务端生成一条记录,在这个记录里可以说明登录的用户是谁,然后把这条记录的id发送给客户端,客户端收到以后把这个id存储在cookie里,下次该用户再次向服务端发送请求的时候,可以带上这个cookie,这样服务端会验证一下cookie里的信息,看能不能在服务端这里找到对应的记录,如果可以,说明用户已经通过了身份验证,就把用户请求的数据返回给客户端。

  以上所描述的过程就是利用session,那个id值就是sessionid。我们需要在服务端存储为用户生成的session,这些session会存储在内存,磁盘,或者数据库。

  基于token机制的身份认证

  使用token机制的身份验证 *** ,在服务器端不需要存储用户的登录记录。大概的流程:

  客户端使用用户名和密码请求登录。

  服务端收到请求,验证用户名和密码。

  验证成功后,服务端会生成一个token,然后把这个token发送给客户端。

  客户端收到token后把它存储起来,可以放在cookie或者Local storage(本地存储)里。

  客户端每次向服务端发送请求的时候都需要带上服务端发给的token。

  服务端收到请求,然后去验证客户端请求里面带着token,如果验证成功,就向客户端返回请求的数据。

  利用token机制进行登录认证,可以有以下方式:

  a.用设备mac地址作为token

  客户端:客户端在登录时获取设备的mac地址,将其作为参数传递到服务端

  服务端:服务端接收到该参数后,便用一个变量来接收,同时将其作为token保存在数据库,并将该token设置到session中。客户端每次请求的时候都要统一拦截,将客户端传递的token和服务器端session中的token进行对比,相同则登录成功,不同则拒绝。

  此方式客户端和服务端统一了唯一的标识,并且保证每一个设备拥有唯一的标识。缺点是服务器端需要保存mac地址;优点是客户端无需重新登录,只要登录一次以后一直可以使用,对于超时的问题由服务端进行处理。

  b.用sessionid作为token

  客户端:客户端携带用户名和密码登录

  服务端:接收到用户名和密码后进行校验,正确就将本地获取的sessionid作为token返回给客户端,客户端以后只需带上请求的数据即可。

  此方式的优点是方便,不用存储数据,缺点就是当session过期时,客户端必须重新登录才能请求数据。

  当然,对于一些保密性较高的应用,可以采取两种方式结合的方式,将设备mac地址与用户名密码同时作为token进行认证。

  APP利用token机制进行身份认证

  用户在登录APP时,APP端会发送加密的用户名和密码到服务器,服务器验证用户名和密码,如果验证成功,就会生成相应位数的字符产作为token存储到服务器中,并且将该token返回给APP端。

  以后APP再次请求时,凡是需要验证的地方都要带上该token,然后服务器端验证token,成功返回所需要的结果,失败返回错误信息,让用户重新登录。其中,服务器上会给token设置一个有效期,每次APP请求的时候都验证token和有效期。

  token的存储

  token可以存到数据库中,但是有可能查询token的时间会过长导致token丢失(其实token丢失了再重新认证一个就好,但是别丢太频繁,别让用户没事儿就去认证)。

  为了避免查询时间过长,可以将token放到内存中。这样查询速度绝对就不是问题了,也不用太担心占据内存,就算token是一个32位的字符串,应用的用户量在百万级或者千万级,也是占不了多少内存的。

  token的加密

  token是很容易泄露的,如果不进行加密处理,很容易被恶意拷贝并用来登录。加密的方式一般有:

  在存储的时候把token进行对称加密存储,用到的时候再解密。

  文章最开始提到的签名sign:将请求URL、时间戳、token三者合并,通过算法进行加密处理。

  更好是两种方式结合使用。

  还有一点,在 *** 层面上token使用明文传输的话是非常危险的,所以一定要使用HTTPS协议。

  总结

  以上就是对于token在用户身份认证过程中的简单总结。希望没有技术背景的产品经理们在和开发哥哥沟通的时候不要再被这些技术术语问住了。

  作者:流年,互联网产品设计师,4年互联网产品设计经验。

  本文由 @流年 原创发布。未经许可,禁止转载。

  题图由作者提供

更多关于云服务器域名注册虚拟主机的问题,请访问西部数码官网:www.west.cn

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/24010.html

分享给朋友:

“简单理解token机制” 的相关文章

深圳站长的网站之路,深圳站长的网站之路

深圳站长的网站之路,深圳站长的网站之路

  前言:本文是原创首发。做站有几年了 (1)初识网络: 高中毕业时候,造化弄人,读了个计算机会计专业(听说好考,找工作容易,呵呵),结果不感兴趣,两年毕业后,全科考试通过,但会计证我都没拿就走了,觉得没意思,会计应该是女人干的活。大专期间,空闲时间很多,那时候有空就去机房(费用从餐...

站长空间:专访驱动中国网站创始人苏杨,站长空间:专访驱动中国网站创始人苏杨

站长空间:专访驱动中国网站创始人苏杨,站长空间:专访驱动中国网站创始人苏杨

  一个大学生的建站创业之路 1999年,来北京上大学之前从未见过计算机的苏杨,很快对计算机和互联网着了迷,半年后便利用学到的知识来负担自己的学费和生活费。2002年,用手里仅有的几千元钱买了服务器做虚拟主机、网站,开始创业,2003年初成立公司,进入IDC行业。 到2005年,当在IDC行...

【征文精选】一个草根站长的梦,【征文精选】一个草根站长的梦

【征文精选】一个草根站长的梦,【征文精选】一个草根站长的梦

   各位网友朋友大家好,看到admin5的(草根站长故事征集活动),无意之间就有心里一种冲动,看着网络上的故事真是太多了,大千世界,无奇不有。现在还是饿着肚子,也没有什么事情可做,天天添加内容,都快累死了,有太多的时候都是这样度过的,早上10点起床,来到公司一天就是2顿饭,天天关注自...

18岁小伙站长的2006年,18岁小伙站长的2006年

18岁小伙站长的2006年,18岁小伙站长的2006年

  2006刚过完年,家人都移身前往深圳去玩了,我没有那心情就没跟去。自己一个人在家呆着。呆着无聊,就准备准备去了师傅那里继续我的网络维护学习生涯。在师傅给我安排的工作室里 我天天进的都是it.pconline.com.cn(太平洋IT基地)和网易、天极这些门户站的论坛里 学习巩固师傅说的东西,有...

蓝色理想站长访谈:人才资金技术是永恒主题-人物精读,蓝色理想站长访谈:人才资金技术是永恒主题-人物精读

蓝色理想站长访谈:人才资金技术是永恒主题-人物精读,蓝色理想站长访谈:人才资金技术是永恒主题-人物精读

  编者:蓝色理想 www.blueidea.com 成立于1999年的10月,作为国内最大的设计类站点之一,以建设网站设计与开发人员之家为宗旨,以介绍网络开发技术与网站创作设计交流为主要内容。其网站内容制作精良,每天都会有会员精心制作的教程发布,无私地对网友进行帮助,而且还举办过不少设计比赛并...

去秀员工写的站长故事,去秀员工写的站长故事

去秀员工写的站长故事,去秀员工写的站长故事

  这是一篇很难得的博客文章 ,一个自己说文笔不好,但是字里行间对公司深情的员工 ———————————————————————————— 看到很多朋友写博客在介绍自己的站,我虽然文笔不好,但是也时常有这种冲动,想把心里面的一些想法,或者自己的作品能让更多人去了解和指出不足的地方。 很荣幸加...