0
点赞
收藏
分享

微信扫一扫

token + redis 如何认证

天蓝Sea 2023-07-31 阅读 77

Token + Redis 认证

在Web应用中,用户认证是很重要的一环。Token认证是一种常见的认证方式,通过在每次请求中携带Token来验证用户身份。而Redis是一个高性能的内存数据库,可以用来存储用户的Token信息。

Token 认证流程

Token认证的基本流程如下:

  1. 用户提供用户名和密码进行登录;
  2. 服务器验证用户名和密码是否正确;
  3. 如果验证成功,服务器生成一个Token,并将Token与用户信息关联存储到Redis中;
  4. 服务器将Token返回给客户端;
  5. 客户端在每个请求中携带Token;
  6. 服务器接收到请求后,从Redis中获取Token对应的用户信息进行验证;
  7. 如果验证成功,服务器处理请求。

Redis 存储 Token

为了实现Token认证,我们可以将Token与用户信息关联起来存储在Redis中。我们可以使用用户的ID作为Key,Token作为Value存储在Redis中。

下面是一个示例的代码,演示了如何使用Redis存储Token:

import redis
import uuid

# 连接Redis
redis_conn = redis.Redis(host='localhost', port=6379, db=0)

def generate_token(user_id):
    # 生成Token
    token = str(uuid.uuid4())
    
    # 将Token与用户ID关联存储在Redis中
    redis_conn.setex(user_id, token, 3600)  # 设置Token的过期时间为1小时
    
    return token

def verify_token(user_id, token):
    # 从Redis中获取Token
    stored_token = redis_conn.get(user_id)
    
    # 验证Token是否有效
    if stored_token.decode() == token:
        # 更新Token的过期时间
        redis_conn.expire(user_id, 3600)  # 设置Token的过期时间为1小时
        return True
    
    return False

在上面的代码中,generate_token函数用于生成Token,并将Token与用户ID关联存储在Redis中。verify_token函数用于验证Token是否有效。

Token 认证

在每次请求中,客户端需要携带Token。服务器接收到请求后,从请求中获取Token,并进行验证。

下面是一个示例的代码,演示了如何进行Token认证:

from flask import Flask, request

app = Flask(__name__)

@app.route('/protected')
def protected_resource():
    # 从请求头中获取Token
    token = request.headers.get('Authorization')
    
    # 验证Token是否有效
    if verify_token(user_id, token):
        # Token验证通过,处理请求
        
        return 'Access granted'
    
    return 'Access denied'

在上面的代码中,我们使用Flask框架来演示Token认证。protected_resource函数是受保护的资源,只有在Token验证通过时才能访问。

总结

Token + Redis认证是一种常见的认证方式,通过将Token与用户信息关联存储在Redis中,实现了无状态的认证机制。在每次请求中,客户端携带Token,服务器从Redis中获取Token对应的用户信息进行验证。Token认证可以提高系统的可扩展性和安全性。

以上是Token + Redis认证的简单示例,你可以根据自己的需求进行扩展和修改。希望对你有所帮助!

举报

相关推荐

0 条评论