在封装对token的操作之前,我们首先需要确定使用的编程语言。以下是使用Python语言来封装对token的操作的一个示例:
```python
import jwt
import datetime
class TokenHelper:
def __init__(self, secret_key):
self.secret_key = secret_key
def generate_token(self, payload, expiration_minutes=30):
# 添加过期时间
payload['exp'] = datetime.datetime.utcnow() + datetime.timedelta(minutes=expiration_minutes)
# 生成token
token = jwt.encode(payload, self.secret_key, algorithm='HS256')
return token
def decode_token(self, token):
try:
# 解码token
payload = jwt.decode(token, self.secret_key, algorithms=['HS256'])
# 检查过期时间
if 'exp' in payload and datetime.datetime.utcnow() > datetime.datetime.fromtimestamp(payload['exp']):
raise jwt.ExpiredSignatureError
return payload
except jwt.ExpiredSignatureError:
# 处理过期token
raise Exception('Expired token.')
except jwt.InvalidTokenError:
# 处理无效token
raise Exception('Invalid token.')
```
使用示例:
```python
# 实例化TokenHelper类,传入密钥
token_helper = TokenHelper('your_secret_key')
# 生成token
payload = {'user_id': 12345}
token = token_helper.generate_token(payload)
# 解码token
try:
decoded_payload = token_helper.decode_token(token)
print(decoded_payload)
except Exception as e:
print(str(e))
```
在上述示例中,我们创建了一个名为TokenHelper的类,它有两个方法:generate_token和decode_token。generate_token方法用于生成token,其中包括一个payload和过期时间。decode_token方法用于解码token,并验证token是否过期。如果token已过期或无效,将引发相应的异常。
请注意,这只是一个示例,实际应用中可能还需要进行其他的安全性检查和处理。