token鉴权

前言

上一篇博客介绍了什么是cookie、session,以及cookie和session之间的区别,运行机制等。那么这篇博客一起来看看另外一种鉴权方式,也就是token鉴权,token就是接口层面的一种校验而已。

一、什么是token?

  • 其实token就是一个令牌,通俗一点可以称为‘暗号’,在一些数据传递之前,要先进行暗号的核对,不同的暗号(令牌)之前被授权不同的数据操作。

二、token的运行机制。

client web server 1、 HTTP Request 发送已登录信息 2、生成加密后的token(可以使用uuid+time进行加密) 3、返回服务器生成token 4、再次请求API时,带上token 5、拿到token,解密token,校验Token 6.1 校验通过,返回请求的数据 6.2 校验不通过,返回错误码接口信息 client web server

三、token的特征

在web领域基于Token的身份验证太多了,在大多数使用Web API 的互联网公司中,tokens是多用户下处理认证的最佳方式,token具有如下几个特点:

  • 无状态、可扩展 :可以提供可选的权限给第三方应用程序
  • 可以跨程序进行调用 : 可以多平台跨域进行使用
  • 安全(一般的session会包含用户的信息,token只需要是一串不会重复的字符串即可);

四、token的使用

3、使用token机制的API和web应用有,微信小程序、微信公众号、github、Google等等,来看看微信公众号的开发者文档;

  • 微信公众号开发者官网文档链接如下:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
  • 获取token
import requests
url = 'https://api.weixin.qq.com/cgi-bin/token?'
data = {
    'grant_type':'client_credential',
    'appid':'wxf22352e9bf6e2c**',    #申请一个接口测试账号,就会生成appid,第三方用户的唯一凭证
    'secret':'f1913cb6abee0f6901df617288f4b3**' #申请一个接口测试账号,就会生成secret,第三方用户唯一凭证秘钥
} 
res = requests.get(url=url,params=data)
print(res.json())
输出结果---
{'access_token': '40_agtfzq1XHP-WCnJCUH2g1v9OqBhlCCUgvvmatoOwXvuJyXELc5aD-RndlPr596UBNBD5iQ4tTiVHPT9pIn-eBnFyZuQaGx_1kjxvtRzyMxSlQhikSFQClDGt_jYqu5vScGhQ_zXQmwCKIfqhNKQhAAAIFL', 'expires_in': 7200}
返回参数说明---
assess_token:获取到的唯一凭证,该用户的唯一凭证,比如进行后续操作需要带上这个token。
expires_in: assess_token的有效时间,单位(秒)
  • 使用上述token:以微信公众号中创建用户标签为例
# 接口文档中url需要带上上述获取access_token,才可以完成创建用户标签操作
# 当然绝对手动copy参数access_token到下一个接口中,很麻烦,并且容易出错,后续博客会介绍正则表达式和jsonpath提取器等等
url_2 = 'https://api.weixin.qq.com/cgi-bin/tags/create?access_token=40_agtfzq1XHP-WCnJCUH2g1v9OqBhlCCUgvvmatoOwXvuJyXELc5aD-RndlPr596UBNBD5iQ4tTiVHPT9pIn-eBnFyZuQaGx_1kjxvtRzyMxSlQhikSFQClDGt_jYqu5vScGhQ_zXQmwCKIfqhNKQhAAAIFL'
data = {
    "tag" : {"name":"上海"}
         }
res_2 =requests.post(url=url_2,json=data)
print(res_2.json())
输出结果---
{'tag': {'id': 103, 'name': '\\u4e0a\\u6d77'}}

五、session和token的区别?

  • 1、session只是一种会话,token是接口层面的一种校验机制
  • 2、token在多个会话中可以使用
  • 3、token可以跨平台,跨域实现
  • 4、session一般是存储在内存中,每个用户通过认证后,会存储到内存中,当用户量增大,服务器的压力会增大
  • 5、session 不能扩展性,比如搭建了多个服务器,虽然每个服务器执行同样的逻辑,但是session数据是保存在内存中,不能共享的,到另外一台服务器上面时,会判定该用户未登录过。
  • 14
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值