当前位置: 首页 > wzjs >正文

怎么自己做卡盟网站中国疫情最新消息

怎么自己做卡盟网站,中国疫情最新消息,北京市人大网站建设,屯溪网站建设目录 1. 双令牌机制2. 工作流程3. 客户端实现4. 服务器端实现5. 注意事项拓展:Token在客户端安全存储的几种方式 为了实现客户端在 JWT Token 过期后自动更新 Token,通常会采用 Access Token 和 Refresh Token 的双令牌机制。以下是实现自动更新 Token 的…

目录

      • 1. 双令牌机制
      • 2. 工作流程
      • 3. 客户端实现
      • 4. 服务器端实现
      • 5. 注意事项
        • 拓展:Token在客户端安全存储的几种方式


为了实现客户端在 JWT Token 过期后自动更新 Token,通常会采用 Access Token 和 Refresh Token 的双令牌机制。以下是实现自动更新 Token 的具体方法和流程:

1. 双令牌机制

  • Access Token:有效期较短(例如 15 分钟到 1 小时),用于客户端访问受保护的资源。
  • Refresh Token:有效期较长(例如 7 天到 30 天),用于刷新过期的 Access Token。

2. 工作流程

  1. 用户登录

    • 用户提交用户名和密码给服务器。
    • 服务器验证成功后,生成 Access Token 和 Refresh Token。
    • Access Token 有较短的有效期,而 Refresh Token 有较长的有效期。
  2. Access Token 过期

    • 当 Access Token 过期时,客户端在发送请求时会携带过期的 Access Token 和有效的 Refresh Token。
    • 客户端不需要让用户重新登录,而是使用 Refresh Token 向服务器请求刷新一个新的 Access Token。
    • 服务器验证 Refresh Token,如果有效,则生成新的 Access Token 和新的 Refresh Token(防止 Refresh Token 被盗用),并将它们返回给客户端。
    • 客户端用新的 Access Token 继续访问 API。
  3. Token 刷新失败

    • 如果 Refresh Token 也过期,或者 Refresh Token 被篡改,服务器会要求用户重新登录。

3. 客户端实现

客户端需要在每次请求时检查 Access Token 是否过期,并在过期时自动使用 Refresh Token 请求新的 Access Token。以下是一个示例流程:

客户端请求逻辑

  1. 发送请求
    • 客户端发送请求时,携带 Access Token。
  2. 检查响应
    • 如果服务器返回 401 Unauthorized(表示 Access Token 过期),客户端自动使用 Refresh Token 请求新的 Access Token。
  3. 刷新 Token
    • 客户端向服务器发送一个刷新请求,携带 Refresh Token。
    • 服务器验证 Refresh Token,如果有效,返回新的 Access Token 和新的 Refresh Token。
    • 客户端更新本地存储的 Access Token 和 Refresh Token,并重新发送之前失败的请求。

4. 服务器端实现

服务器端需要提供一个专门的接口用于刷新 Token。以下是一个示例:

from flask import Flask, request, jsonify
import jwt
import datetimeapp = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key_here'  # 替换为你的密钥# 模拟用户数据库
users = {"user1": "password1","user2": "password2"
}def create_token(payload, expiry_minutes=60):"""生成 Access Token"""expiry = datetime.datetime.utcnow() + datetime.timedelta(minutes=expiry_minutes)return jwt.encode(payload, app.config['SECRET_KEY'], algorithm='HS256')def create_refresh_token(payload, expiry_days=7):"""生成 Refresh Token"""expiry = datetime.datetime.utcnow() + datetime.timedelta(days=expiry_days)return jwt.encode(payload, app.config['SECRET_KEY'], algorithm='HS256')@app.route('/login', methods=['POST'])
def login():# 获取请求中的用户名和密码username = request.json.get('username')password = request.json.get('password')# 验证用户名和密码if username not in users or users[username] != password:return jsonify({'error': 'Invalid username or password'}), 401# 生成 Access Token 和 Refresh Tokenaccess_token = create_token({"user_id": username})refresh_token = create_refresh_token({"user_id": username})# 返回 Tokenreturn jsonify({'access_token': access_token,'refresh_token': refresh_token})@app.route('/token/refresh', methods=['POST']) # 刷新 Token 的接口
def refresh_token():refresh_token = request.json.get('refresh_token')if not refresh_token:return jsonify({'error': 'Refresh token is missing'}), 400try:# 解码 Refresh Tokenpayload = jwt.decode(refresh_token, app.config['SECRET_KEY'], algorithms=['HS256'])user_id = payload['user_id']# 生成新的 Access Token 和 Refresh Tokennew_access_token = create_token({"user_id": user_id})new_refresh_token = create_refresh_token({"user_id": user_id})return jsonify({'access_token': new_access_token,'refresh_token': new_refresh_token})except jwt.ExpiredSignatureError:return jsonify({'error': 'Refresh token has expired'}), 401except jwt.InvalidTokenError:return jsonify({'error': 'Invalid refresh token'}), 401if __name__ == '__main__':app.run(debug=True)

5. 注意事项

  • 安全性:确保 Refresh Token 的安全性,避免泄露。可以对 Refresh Token 的使用次数进行限制。
  • 用户体验:通过自动刷新机制,用户无需频繁重新登录,提升用户体验。
  • 存储方式:客户端可以将 Token 存储在本地,存储方式可以考虑SQLite 数据库、文件存储、Android Keystore、EncryptedSharedPreferences、SQLCiphe。
拓展:Token在客户端安全存储的几种方式

Token在客户端安全存储的几种方式

http://www.dtcms.com/wzjs/492815.html

相关文章:

  • 郑州市汉狮做网站google搜索引擎入口google
  • 美女学习资料网站免费媒体网络推广价格优惠
  • 网站 字号 英文网络营销是以什么为中心
  • 公司网站注销流程软文推广的标准类型
  • 武汉汉口做网站费用搜索词热度查询
  • 康巴什网站建设品牌推广百度seo
  • 中医网站建设素材柳州网站建设哪里有
  • 网站开发原型工具推广赚钱平台有哪些
  • 定制高端网站建设报价网络推广怎么做?
  • wordpress如何分版李勇seo博客
  • 腾讯分分彩做号网站百度快速收录网站
  • 用django做网站好看的seo网站
  • 单页网站欣赏百度文库官网入口
  • 网站购物车功能怎么做seo整站优化服务
  • 电商设计软件深圳seo优化公司
  • 礼品网站建设公司百度手机助手app下载官网
  • 黄山景区的网站做的怎么样成都最新热门事件
  • 网站和网业的关系宁波网站优化公司哪家好
  • 想做广告行业怎么入手上海关键词优化排名软件
  • 做甜品台的网站新手电商运营从哪开始学
  • 一个网站是怎么建立的seo教程书籍
  • 网站备案为什么要闭站品牌营销网站建设
  • 建站公司网站建设seo网站推广企业
  • 济南百度公司seo顾问能赚钱吗
  • 佛山 网站设计公司网络营销的特点
  • 锡盟本地网站建设网络营销服务企业
  • 中信建设有限责任公司 陈晓佳郑州seo优化外包
  • 怎样申请免费网站域名百度广告位价格表
  • 深圳服务好的网站建设河南疫情最新消息
  • 河南企业网络推广方法太原网站建设方案优化