用户登录使用jwt令牌,代码解释
时间: 2024-02-28 13:50:24 浏览: 20
用户登录使用JWT令牌的代码解释如下:
```python
import jwt
# 生成JWT令牌
def generate_token(user_id):
payload = {'user_id': user_id}
token = jwt.encode(payload, 'secret_key', algorithm='HS256')
return token
# 验证JWT令牌
def verify_token(token):
try:
payload = jwt.decode(token, 'secret_key', algorithms=['HS256'])
user_id = payload['user_id']
return user_id
except jwt.ExpiredSignatureError:
# 令牌过期
return None
except jwt.InvalidTokenError:
# 令牌无效
return None
# 用户登录
def login(username, password):
# 验证用户名和密码
if username == 'admin' and password == '123456':
# 生成JWT令牌
token = generate_token(1)
return token
else:
return None
# 用户访问需要验证的接口
def access_protected_resource(token):
# 验证JWT令牌
user_id = verify_token(token)
if user_id:
# 用户验证通过,可以访问受保护的资源
return "Access granted"
else:
# 用户验证失败,无法访问受保护的资源
return "Access denied"
```
以上代码中,`generate_token`函数用于生成JWT令牌,其中`payload`是存储在令牌中的用户相关信息。`verify_token`函数用于验证JWT令牌的有效性,并返回用户ID。`login`函数用于用户登录,验证用户名和密码后生成JWT令牌。`access_protected_resource`函数用于用户访问需要验证的接口,通过验证JWT令牌来判断用户是否有权限访问受保护的资源。